diff --git a/spip2md/content.py b/spip2md/content.py index 815ffb2..e186386 100644 --- a/spip2md/content.py +++ b/spip2md/content.py @@ -24,7 +24,7 @@ def test(filename): # Test test("../test/0.spip") -# test("../test/1.spip") -# test("../test/2.spip") -# test("../test/3.spip") -# test("../test/4.spip") +test("../test/1.spip") +test("../test/2.spip") +test("../test/3.spip") +test("../test/4.spip") diff --git a/spip2md/spip.lark b/spip2md/spip.lark index 4483dd3..84a20ba 100644 --- a/spip2md/spip.lark +++ b/spip2md/spip.lark @@ -34,11 +34,11 @@ _H: "{{{" _block_tag.1: pair_block_tag | orphan_block_tag -pair_block_tag: _PAIR_TAG_ANGLE TAG_NAME ( "|" TAG_OPTION )* ">" start "" -> tag -orphan_block_tag: _ORPHAN_TAG_ANGLE "/"? TAG_NAME ( "|" TAG_OPTION )* ">" -> orphan_tag +pair_block_tag: _PAIR_TAG_ANGLE TAG_NAME ( _OPTION_SEP TAG_OPTION )* ">" start "" -> tag +orphan_block_tag: _ORPHAN_TAG_ANGLE "/"? TAG_NAME ( _OPTION_SEP TAG_OPTION )* ">" -> orphan_tag -_PAIR_TAG_ANGLE: /\<(?=([0-9A-Za-z_:\/\-\.]+)(?:\|[0-9A-Za-z_:\/\-\.]+)*\>[\s\S]+\<\/\1\>)/ -_ORPHAN_TAG_ANGLE: /\<(?=([0-9A-Za-z_:\/\-\.]+)(?:\|[0-9A-Za-z_:\/\-\.]+)*\>)(?![\s\S]+\<\/\1\>)/ +_PAIR_TAG_ANGLE: /<(?=([0-9A-Za-z_:|,=\/\-\. ]+)>[\s\S]+<\/\1>)/ +_ORPHAN_TAG_ANGLE: /<(?=([0-9A-Za-z_:|,=\/\-\. ])+>)(?![\s\S]+\<\/\1\>)/ paragraph.-1: ( _inline{TEXT} _N? )+ @@ -51,11 +51,11 @@ _inline{text}: _inline_tag _inline_tag.1: pair_inline_tag | orphan_inline_tag -pair_inline_tag: _PAIR_INLINE_TAG_ANGLE TAG_NAME ( "|" TAG_OPTION )* ">" _inline{TEXT} ( "" | _N ) -> tag -orphan_inline_tag: _INLINE_TAG_ANGLE "/"? TAG_NAME ( "|" TAG_OPTION )* ">" -> orphan_tag +pair_inline_tag: _PAIR_INLINE_TAG_ANGLE TAG_NAME ( _OPTION_SEP TAG_OPTION )* ">" paragraph ( "" | _N ) -> tag +orphan_inline_tag: _INLINE_TAG_ANGLE "/"? TAG_NAME ( _OPTION_SEP TAG_OPTION )* ">" -> orphan_tag -_PAIR_INLINE_TAG_ANGLE.1: /\<(?=(?:quote|section|div|cadre|frame|code|poesie|del)(?:\|[0-9A-Za-z_:\/\-\.]+)*\>)/ -_INLINE_TAG_ANGLE: /\<(?!\/?(?:quote|section|div|cadre|frame|code|poesie|del))(?=[0-9A-Za-z\|_:\/\-\.]+\>)/ +_PAIR_INLINE_TAG_ANGLE.1: /\<(?=(?:quote|section|div|cadre|frame|code|poesie|del|p|P)(?:\|[0-9A-Za-z_:,=\/\-\. ]+)*\>)/ +_INLINE_TAG_ANGLE: /\<(?!\/?(?:quote|section|div|cadre|frame|code|poesie|del|p|P))(?=[0-9A-Za-z\|_:,=\/\-\. ]+\>)/ _link: footnote | wikilink @@ -63,12 +63,12 @@ _link: footnote footnote: _FOOT FOOTNOTE_CONTENT "]]" wikilink: _WIKI HREF "]" -anchor: _A A_TEXT "->" HREF "]" +anchor: _A A_TEXT "->" " "* HREF " "* "]" _FOOT: /\[\[/ _WIKI: /\[\?/ _A: /\[(?=[^\[\n\r]+->)/ FOOTNOTE_CONTENT: /[0-9A-Za-z_:\/\-\.\ ]+/ -HREF: _PURE_TEXT +HREF: _PURE_TEXT | _PLACEHOLDER A_TEXT: /[^\r\n\{]+?(?=->)/ strong: _B ( _inline{MARKED_TEXT} )+ ( "}}" | _N ) @@ -76,8 +76,12 @@ emphasis: _I ( _inline{MARKED_TEXT} )+ ( "}" | _N ) _B: /{{(?=[^\{])/ _I: /{(?=[^\{])/ -TEXT.-1: / (?:[^\r\n\{\<](?![^\[\n\r]*->|\?[^\[\n\r]*\]|\[[^\[\n\r]*\]\]))+ - | (?:\<(?![0-9A-Za-z_:\/\-\.]+\>))+ +TEXT.-1: / (?:[^\r\n\{\<](?! + [^\[\n\r]*-> + |\?[^\[\n\r]*\] + |\[[^\[\n\r]*\]\] + ))+ + | (?:\<(?![0-9A-Za-z_:|,=\/\-\. ]+\>))+ | \\{ /x TABLE_TEXT.-1: /(?:[^\|\r\n\{](?![^\[\n\r]*->))+/ @@ -85,5 +89,7 @@ MARKED_TEXT.-1: /(?:[^\}\r\n\{](?![^\[\n\r]*->))+/ TAG_NAME: _PURE_TEXT TAG_OPTION: _PURE_TEXT +_OPTION_SEP: " "* "|" " "* | " "+ _N: /\r?\n/ -_PURE_TEXT: /[0-9A-Za-z_:\/\-\.]+/ +_PURE_TEXT: /[0-9A-Za-z_:,=\/\-\.]+/ +_PLACEHOLDER: /[\*]+/