From e5682d5c1179c048a22d07fc3d169011dce9b9f3 Mon Sep 17 00:00:00 2001
From: Mars Liu <mars.liu@outlook.com>
Date: Fri, 21 Jan 2022 10:28:40 +0800
Subject: [PATCH] support $ in content

---
 README.md                               |  5 ++-
 setup.py                                |  2 +-
 src/skill_tree/exercises/markdown.py    |  2 +-
 src/skill_tree/exercises/market_math.py |  2 +-
 src/test/exercises/markdown_test.py     | 54 ++++++++++++++++++++++++-
 5 files changed, 59 insertions(+), 6 deletions(-)

diff --git a/README.md b/README.md
index 6fd4b7f..269a9b5 100644
--- a/README.md
+++ b/README.md
@@ -19,4 +19,7 @@ CSDN 技能树结构(章节、元信息、习题)解释器,支持技能树
  - 为 `keywords_must` 和 `keywords_forbid` 的读取操作添加默认值 
 
 ### 0.0.7
- - 为 config.json 添加默认的 `keywords_must` 和 `keywords_forbid` 空列表
\ No newline at end of file
+ - 为 config.json 添加默认的 `keywords_must` 和 `keywords_forbid` 空列表
+
+### 0.0.8
+ - 补充对 $ 符号的宽容处理
\ No newline at end of file
diff --git a/setup.py b/setup.py
index c76ae57..b52896e 100644
--- a/setup.py
+++ b/setup.py
@@ -7,7 +7,7 @@ this_directory = Path(__file__).parent
 long_description = (this_directory / "README.md").read_text()
 
 setup(name="skill-tree-parser",
-      version="0.0.7",
+      version="0.0.8",
       description="CSDN Skill Tree Parser",
       long_description=long_description,
       long_description_content_type='text/markdown',
diff --git a/src/skill_tree/exercises/markdown.py b/src/skill_tree/exercises/markdown.py
index d3a7148..a4a56f7 100644
--- a/src/skill_tree/exercises/markdown.py
+++ b/src/skill_tree/exercises/markdown.py
@@ -185,7 +185,7 @@ def paragraph(state):
             continue
         finally:
             state.rollback(tran)
-        return Paragraph(processor(buffer), "markdown")
+        return Paragraph(processor(buffer).strip(), "markdown")
 
     return Paragraph(processor(buffer), "markdown")
 
diff --git a/src/skill_tree/exercises/market_math.py b/src/skill_tree/exercises/market_math.py
index f93df5d..7e79caf 100644
--- a/src/skill_tree/exercises/market_math.py
+++ b/src/skill_tree/exercises/market_math.py
@@ -110,7 +110,7 @@ def processor(plain):
                         buffer += c
                 except ParsecError as err:
                     st.commit(tran)
-                    buffer += st.data[index:st.index]
+                    buffer += "$"+st.data[index:st.index]
 
             else:
                 st.commit(tran)
diff --git a/src/test/exercises/markdown_test.py b/src/test/exercises/markdown_test.py
index dceddc3..85c58da 100644
--- a/src/test/exercises/markdown_test.py
+++ b/src/test/exercises/markdown_test.py
@@ -212,7 +212,8 @@ class MathTestCase(unittest.TestCase):
         result = processor(data)
         self.assertEqual(result, math_processor(data))
 
-spark = """# Neo4j的Apache Spark连接器
+spark = """
+# Neo4j的Apache Spark连接器
 
 Apache Spark 的 Neo4j 连接器旨在使图与 Spark 的集成变得容易。有两种有效的使用连接器的方法:
 
@@ -304,4 +305,53 @@ class MarkdownBlockTestCase(unittest.TestCase):
         state = BasicState(learn.strip())
         doc = mk.parse(state)
         self.assertEqual("```diff\nvar foo = 'bar';\n+ var x = 200;\n* var x = 100;\n```",
-                         doc.options[1].paras[0].source)
\ No newline at end of file
+                         doc.options[1].paras[0].source)
+
+
+shell = """
+# SHELL 的变量
+
+下面说法中不正确的是
+
+## 答案
+
+下面的代码扩展了系统变量 $PATH
+
+```
+export $PATH=$PATH:$HOME/bin
+```
+
+## 选项
+
+### A
+
+Shell 通常使用 `$abc` 的形式引用变量
+
+### B
+
+下面的代码扩展了系统变量 $PATH
+
+```
+export PATH=$PATH:$HOME/bin
+```
+
+### C
+
+通过下列命令可以查看 PATH 
+
+```
+echo $PATH
+```
+"""
+
+class DollarTestCase(unittest.TestCase):
+    def test_parse(self):
+        state = BasicState(shell.strip())
+        doc = mk.parse(state)
+        self.assertEqual("Shell 通常使用 `$abc` 的形式引用变量",
+                         doc.options[0].paras[0].source)
+        self.assertEqual("""下面的代码扩展了系统变量 $PATH""",
+                         doc.options[1].paras[0].source)
+        self.assertEqual("""export PATH=$PATH:$HOME/bin""",
+                         doc.options[1].paras[1].source)
+        self.assertEqual(3, len(doc.options))
\ No newline at end of file
-- 
GitLab