From a4c2bb4fc4f98968516da6268e145e2da0aa19af Mon Sep 17 00:00:00 2001 From: Mars Liu Date: Tue, 2 Nov 2021 22:45:32 +0800 Subject: [PATCH] document --- README.md | 180 +++--------------------------------------------------- 1 file changed, 9 insertions(+), 171 deletions(-) diff --git a/README.md b/README.md index b9ea41e..90eb41a 100644 --- a/README.md +++ b/README.md @@ -59,180 +59,18 @@ pip install -r requirement.txt { // ... "export": [ - // TODO ... + "HellowWorld.json" ] } ``` -格式说明: -* `file`: 指定该目录下的习题源文件 -* `variants`: 指定习题同名的json选项配置文件,参考下一节 -* `depends`: 如果习题依赖同目录下的其他习题源代码,则在此字段里配置依赖的其他习题源文件名 +在 export 字段中,我们列出习题定义 json ,下面我们了解如何编写习题。 ## `知识节点` 的导出习题选项配置编辑 -目前我们支持使用 markdown 语法直接编辑习题和各选项,或者编写习题代码和替换规则,让程序动态生成选项。 - -我们先介绍使用替换规则的习题如何编辑,在最后介绍 markdown 方式编写习题的方法。对于 Java 技能树,我们更*推荐* -使用 markdown 方式编写习题。 - -### 使用替换规则编写习题 - -首先,在知识节点下增加一个习题代码,例如在 `data/1.Java初阶/1.Java概述/1.什么是Java` 下增加一个`HelloWorld.java`代码: - -```java -public class App { - public static void main(String[] args){ - System.out.println("Hello world!") - } -} -``` - -其次,增加一个同名的选项配置文件`HelloWorld.json`,目前有三种配置规则 - -#### 单行替换规则 - -* 配置由`one_line`字段指定的单行替换字典 -* 格式是:`"<源字符串>"`: [`"<替换字符串A>"`, `<替换字符串B>`,...], - * 其中每个 `"<源字符串>"` `/` `"<替换字符串A>"` 被生成为是一个替换选项 - * 指定的配置应该能至少生成 `3+` 个替换选项 - -```json -{ - "one_line": { - "println": ["printf", "print", "fprint"] - } -} -``` - -上面的替换规则会将代码替换成 3 个变种的代码: - -```java -public class App { - public static void main(String[] args){ - System.out.print("Hello world!") - } -} -``` - -```java -public class App { - public static void main(String[] args){ - System.out.printf("Hello world!") - } -} +目前我们支持使用 markdown 语法直接编辑习题和各选项。 -``` - -```java -public class App { - public static void main(String[] args){ - System.out.sprint("Hello world!") - } -} -``` - -这些变种代码将会作为技能树该知识点该代码选择题的选项。 - -#### 多行替换规则 - -* 配置由`multiline`字段指定的多行替换数组 -* 数组的每个元素是一组替换规则,会整组被替换 - -例如: - -```json -{ - "mulitiline": [{ - "public class": "public interface", - "main(": "Main(" - }, - { - "public class": "interface", - "void main": "int main" - }, - { - "public static void main": "public void main" - }] -``` - -上面的替换规则会将代码替换成 3 个变种的代码: - -```java -public interface App { - public static void Main(String[] args){ - System.out.println("Hello world!") - } -} -``` - -```java -public interface App { - public static int main(String[] args){ - System.out.println("Hello world!") - } -} - -``` - -```java -public class App { - public void main(String[] args){ - System.out.print("Hello world!") - } -} -``` - -这些变种代码将会作为技能树该知识点该代码选择题的选项。 - - -#### 预制的替换规则 - - * 配置由 `prepared` 字段制定的预制文件数组 - * 数组每一个元素是一个预制的代码文件的路径文件名 - -例如: - -```json -{ - "prepared": [ - "HelloWord.1.java", - "HelloWord.2.java", - "HelloWord.3.java"] -} -``` - -同样,该配置将支持将源代码生成3个变种代码 - -```java -// HelloWord.1.java -public interface App { - default void Main(String[] args){ - System.out.println("Hello world!") - } -} -``` - -```java -public interface App { - public static void main(String[] args){ - System.out.println("Hello world!") - } -} - -``` - -```java -class App { - void main(String[] args){ - System.out.print("Hello world!") - } -} -``` - -### 使用 markdown 编写习题 - -如前内容,我们在知识节点下增加一个习题配置,例如在 `data/1.Java初阶/1.Java概述/1.什么是Java` 下增加一个`HelloWorld.json`代码: +如前文内容,我们在知识节点下增加习题 `HelloWord`的定义文件,即在`data/1.Java初阶/1.Java概述/1.什么是Java` 目录增加一个`HelloWorld.json`文件: ```json { @@ -243,12 +81,12 @@ class App { "notebook_enable": true } ``` -其中 type 字段目前都固定是 `code_options`。exercise_id 可以不写,处理程序会自动填补这个数据。根据具体情况写好其它字段,注意这里 source 的文件名,我们指定了一个 markdwon 文件。现在我们新建一个 HelloWorld.md 并编辑为: +其中 type 字段目前都固定是 `code_options`。exercise_id 可以不写,notebook_enable 字段决定这个习题是否生成对应的 notebook 。处理程序会自动填补这个 +数据。根据具体情况写好其它字段,注意这里 source 的文件名,我们指定了一个 markdwon 文件。现在我们新建一个 HelloWorld.md 并编辑为: ````markdown # Hello World - 以下 `Hello World` 程序中,能够正确输出内容的是: ## 答案 @@ -264,7 +102,7 @@ public class App { ## 选项 -### A +### 不必要的返回值 ```java @@ -276,7 +114,7 @@ public class App { } ``` -### B +### 没有引用 System.out ```java @@ -287,7 +125,7 @@ public class App { } ``` -### C +### 混合了 c 代码 ```java import stdout -- GitLab