From 978ce20a70daf76208194594b823d0832ca344a1 Mon Sep 17 00:00:00 2001 From: Mars Liu Date: Tue, 2 Nov 2021 22:36:58 +0800 Subject: [PATCH] document --- README.md | 180 +----------------------------------------------------- 1 file changed, 3 insertions(+), 177 deletions(-) diff --git a/README.md b/README.md index d36bb23..32eccbc 100644 --- a/README.md +++ b/README.md @@ -67,186 +67,13 @@ pip install -r requirement.txt ## `知识节点` 的导出习题选项配置编辑 -目前我们支持使用 markdown 语法直接编辑习题和各选项,或者编写习题代码和替换规则,让程序动态生成选项。 - -我们先介绍使用替换规则的习题如何编辑,在最后介绍 markdown 方式编写习题的方法。对于 Java 技能树,我们更*推荐* -使用 markdown 方式编写习题。 - -### 使用替换规则编写习题 - -首先,在知识节点下增加一个习题定义文件,例如 hello.json : +首先,我们添加前文中 export 指定的习题配置,例如在 `data/1.OceanBase初阶/7.查询数据` 下增加一个`hello.json`代码: ```json { "type": "code_options", "author": "刘鑫", - "source": "hello.sql", -} -``` - -其中 - - * 类型现在仅支持 `code_options` 一种,保持不变即可 - * author 是题目作者 - * source 指题目定义,题目可以是源代码 + 替换规则的形式,也可以用 markdown 编写 - -我们先讨论使用替换规则定义题目的方式。 - -例如在 `data/1.OceanBase初阶/7.查询数据` 下增加一个`hello.sql`代码文件: - -```sql -select 'hello'; -``` - -其次,增加一个同名的选项配置文件`HelloWorld.json`,目前有三种配置规则 - -#### 单行替换规则 - -* 配置由`one_line`字段指定的单行替换字典 -* 格式是:`"<源字符串>"`: [`"<替换字符串A>"`, `<替换字符串B>`,...], - * 其中每个 `"<源字符串>"` `/` `"<替换字符串A>"` 被生成为是一个替换选项 - * 指定的配置应该能至少生成 `3+` 个替换选项 - -```json -{ - "one_line": { - "select": ["print", "log", "echo"] - } -} -``` - -上面的替换规则会将代码替换成 3 个变种的代码: - -```sql -print 'hello'; -``` - -```java -log 'hello'; - -``` - -```java -echo 'hello'; -``` - -这些变种代码将会作为技能树该知识点该代码选择题的选项。 - -#### 多行替换规则 - -* 配置由`multiline`字段指定的多行替换数组 -* 数组的每个元素是一组替换规则,会整组被替换 - -例如: - -假设我们有习题代码: - -```sql -begin - update parent set children = children + $child - insert child(c select $child; - commit; -end -``` -和变形规则 - -```json -{ - "mulitiline": [{ - "begin": "{", - "end": "}" - }, - { - "commit": "save", - "begin": "try{", - "commit;": "", - "end": "}finally{\n\tsave;\n}" - }, - { - "begin": "begin:", - "commit;": "", - "end": "finally: \tcommit;" - }] -``` - -上面的替换规则会将代码替换成 3 个变种的代码: - -```sql -{ - update parent set children = children + $child - insert child(c select $child; - commit; -} -``` - -```sql -try{ - update parent set children = children + $child - insert child(c select $child; - -}finally{ - save; -} -``` - -```sql -begin: - update parent set children = children + $child - insert child(c select $child; - -finally: - commit; -``` - -这些变种代码将会作为技能树该知识点该代码选择题的选项。 - - -#### 预制的替换规则 - - * 配置由 `prepared` 字段制定的预制文件数组 - * 数组每一个元素是一个预制的代码文件的路径文件名 - -例如: - -```json -{ - "prepared": [ - "hello.1.sql", - "hello.2.sql", - "hello.3.sql"] -} -``` - -同样,该配置将支持将源代码生成3个变种代码 - -```sql -try{ - update parent set children = children + $child - insert child(c select $child; - -}finally{ - save; -} -``` - -```sql -begin: - update parent set children = children + $child - insert child(c select $child; - -finally: - commit; -``` - -### 使用 markdown 编写习题 - -如前内容,我们在知识节点下增加一个习题配置,例如在 `data/1.Java初阶/1.Java概述/1.什么是Java` 下增加一个`HelloWorld.json`代码: - -```json -{ - "type": "code_options", - "author": "刘鑫", - "source": "HelloWorld.md", + "source": "hello.md", "exercise_id":"1190bb7834904da0b1f20915960714d5", "notebook_enable": true } @@ -257,7 +84,7 @@ finally: # Hello World -以下 `Hello World` 程序中,能够正确输出内容的是: +以下 `Hello World` 程序中,能够正确输出`hello`的是: ## 答案 @@ -325,7 +152,6 @@ $code end; ``` - ```` 注意这里的代码中,有一个 `$code` 占位符,它在管道程序处理过程中,会替换成答案和个选项内容中的代码。 -- GitLab