From 01ad70419691d1b4fa22d068c5fb46bff24d632e Mon Sep 17 00:00:00 2001 From: frostming Date: Mon, 5 Feb 2018 12:55:03 +0800 Subject: [PATCH 1/3] Fix parsing error #151 on heterogeneous list --- mistune.py | 5 +++-- tests/fixtures/extra/hetero_list.html | 7 +++++++ tests/fixtures/extra/hetero_list.text | 4 ++++ 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 tests/fixtures/extra/hetero_list.html create mode 100644 tests/fixtures/extra/hetero_list.text diff --git a/mistune.py b/mistune.py index 8fb04ae..b48135a 100644 --- a/mistune.py +++ b/mistune.py @@ -118,11 +118,12 @@ class BlockGrammar(object): lheading = re.compile(r'^([^\n]+)\n *(=|-)+ *(?:\n+|$)') block_quote = re.compile(r'^( *>[^\n]+(\n[^\n]+)*\n*)+') list_block = re.compile( - r'^( *)([*+-]|\d+\.) [\s\S]+?' + r'^( *)(?=[*+-]|\d+\.)(([*+-])?(?:\d+\.)?) [\s\S]+?' r'(?:' r'\n+(?=\1?(?:[-*_] *){3,}(?:\n+|$))' # hrule r'|\n+(?=%s)' # def links - r'|\n+(?=%s)' # def footnotes + r'|\n+(?=%s)' # def footnotes\ + r'|\n+(?=(?(3)\d+\.|[*+-]) )' # heterogeneous bullet r'|\n{2,}' r'(?! )' r'(?!\1(?:[*+-]|\d+\.) )\n*' diff --git a/tests/fixtures/extra/hetero_list.html b/tests/fixtures/extra/hetero_list.html new file mode 100644 index 0000000..c8ad0bc --- /dev/null +++ b/tests/fixtures/extra/hetero_list.html @@ -0,0 +1,7 @@ + +
    +
  1. ordered 1
  2. +
\ No newline at end of file diff --git a/tests/fixtures/extra/hetero_list.text b/tests/fixtures/extra/hetero_list.text new file mode 100644 index 0000000..c7be733 --- /dev/null +++ b/tests/fixtures/extra/hetero_list.text @@ -0,0 +1,4 @@ +* unordered 1 + +* unordered 2 +1. ordered 1 \ No newline at end of file From fbdd84835e312bb0dd25a127b3b475bbfc696cdf Mon Sep 17 00:00:00 2001 From: frostming Date: Tue, 6 Feb 2018 12:41:35 +0800 Subject: [PATCH 2/3] hetero list test case --- mistune.py | 2 +- tests/fixtures/extra/hetero_list.html | 21 +++++++++++++++------ tests/fixtures/extra/hetero_list.text | 10 ++++++---- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/mistune.py b/mistune.py index b48135a..a195489 100644 --- a/mistune.py +++ b/mistune.py @@ -123,7 +123,7 @@ class BlockGrammar(object): r'\n+(?=\1?(?:[-*_] *){3,}(?:\n+|$))' # hrule r'|\n+(?=%s)' # def links r'|\n+(?=%s)' # def footnotes\ - r'|\n+(?=(?(3)\d+\.|[*+-]) )' # heterogeneous bullet + r'|\n+(?=\1(?(3)\d+\.|[*+-]) )' # heterogeneous bullet r'|\n{2,}' r'(?! )' r'(?!\1(?:[*+-]|\d+\.) )\n*' diff --git a/tests/fixtures/extra/hetero_list.html b/tests/fixtures/extra/hetero_list.html index c8ad0bc..fc7c916 100644 --- a/tests/fixtures/extra/hetero_list.html +++ b/tests/fixtures/extra/hetero_list.html @@ -1,7 +1,16 @@ -
    -
  1. ordered 1
  2. -
\ No newline at end of file +
  • foo
  • + + \ No newline at end of file diff --git a/tests/fixtures/extra/hetero_list.text b/tests/fixtures/extra/hetero_list.text index c7be733..e46dcd0 100644 --- a/tests/fixtures/extra/hetero_list.text +++ b/tests/fixtures/extra/hetero_list.text @@ -1,4 +1,6 @@ -* unordered 1 - -* unordered 2 -1. ordered 1 \ No newline at end of file +1. foo +- bar + 1. one + 2. two + * three +- foobar \ No newline at end of file From 2a3f96fc893635d7d2b3fe17bd505edaa1920c80 Mon Sep 17 00:00:00 2001 From: frostming Date: Tue, 6 Feb 2018 14:05:02 +0800 Subject: [PATCH 3/3] newlines at EOF --- tests/fixtures/extra/hetero_list.html | 2 +- tests/fixtures/extra/hetero_list.text | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/fixtures/extra/hetero_list.html b/tests/fixtures/extra/hetero_list.html index fc7c916..adc5bf9 100644 --- a/tests/fixtures/extra/hetero_list.html +++ b/tests/fixtures/extra/hetero_list.html @@ -13,4 +13,4 @@
  • foobar
  • - \ No newline at end of file + diff --git a/tests/fixtures/extra/hetero_list.text b/tests/fixtures/extra/hetero_list.text index e46dcd0..a06be5b 100644 --- a/tests/fixtures/extra/hetero_list.text +++ b/tests/fixtures/extra/hetero_list.text @@ -3,4 +3,4 @@ 1. one 2. two * three -- foobar \ No newline at end of file +- foobar