diff --git a/mwparserfromhell/parser/contexts.py b/mwparserfromhell/parser/contexts.py index 2ae3cc3..a7e70fa 100644 --- a/mwparserfromhell/parser/contexts.py +++ b/mwparserfromhell/parser/contexts.py @@ -73,6 +73,7 @@ Local (stack-specific) contexts: * :py:const:`STYLE_ITALICS` * :py:const:`STYLE_BOLD` + * :py:const:`STYLE_PASS_2` * :py:const:`DL_TERM` @@ -124,16 +125,17 @@ TAG = TAG_OPEN + TAG_ATTR + TAG_BODY + TAG_CLOSE STYLE_ITALICS = 1 << 18 STYLE_BOLD = 1 << 19 -STYLE = STYLE_ITALICS + STYLE_BOLD +STYLE_PASS_2 = 1 << 20 +STYLE = STYLE_ITALICS + STYLE_BOLD + STYLE_PASS_2 -DL_TERM = 1 << 20 +DL_TERM = 1 << 21 -HAS_TEXT = 1 << 21 -FAIL_ON_TEXT = 1 << 22 -FAIL_NEXT = 1 << 23 -FAIL_ON_LBRACE = 1 << 24 -FAIL_ON_RBRACE = 1 << 25 -FAIL_ON_EQUALS = 1 << 26 +HAS_TEXT = 1 << 22 +FAIL_ON_TEXT = 1 << 23 +FAIL_NEXT = 1 << 24 +FAIL_ON_LBRACE = 1 << 25 +FAIL_ON_RBRACE = 1 << 26 +FAIL_ON_EQUALS = 1 << 27 SAFETY_CHECK = (HAS_TEXT + FAIL_ON_TEXT + FAIL_NEXT + FAIL_ON_LBRACE + FAIL_ON_RBRACE + FAIL_ON_EQUALS) diff --git a/tests/tokenizer/tags_wikimarkup.mwtest b/tests/tokenizer/tags_wikimarkup.mwtest index 6644cd0..da08a34 100644 --- a/tests/tokenizer/tags_wikimarkup.mwtest +++ b/tests/tokenizer/tags_wikimarkup.mwtest @@ -163,7 +163,21 @@ output: [TagOpenOpen(wiki_markup="'''"), Text(text="b"), TagCloseOpen(), Text(te name: italics_then_both label: text that starts just italic, then is bold/italic input: "''italics'''both'''''" -output: [TagOpenOpen(wiki_markup="'"), Text(text="i"), TagCloseOpen(), Text(text="italics"), TagOpenOpen(wiki_markup="'''"), Text(text="b"), TagCloseOpen(), Text(text="both"), TagOpenClose(), Text(text="b"), TagCloseClose(), TagOpenClose(), Text(text="i"), TagCloseClose()] +output: [TagOpenOpen(wiki_markup="''"), Text(text="i"), TagCloseOpen(), Text(text="italics"), TagOpenOpen(wiki_markup="'''"), Text(text="b"), TagCloseOpen(), Text(text="both"), TagOpenClose(), Text(text="b"), TagCloseClose(), TagOpenClose(), Text(text="i"), TagCloseClose()] + +--- + +name: italics_then_bold +label: text that starts italic, then is bold +input: "none''italics'''''bold'''none" +output: [Text(text="none"), TagOpenOpen(wiki_markup="''"), Text(text="i"), TagCloseOpen(), Text(text="italics"), TagOpenClose(), Text(text="i"), TagCloseClose() TagOpenOpen(wiki_markup="'''"), Text(text="b"), TagCloseOpen(), Text(text="bold"), TagOpenClose(), Text(text="b"), TagCloseClose(), Text(text="none")] + +--- + +name: bold_then_italics +label: text that starts bold, then is italic +input: "none'''bold'''''italics''none" +output: [Text(text="none"), TagOpenOpen(wiki_markup="'''"), Text(text="b"), TagCloseOpen(), Text(text="bold"), TagOpenClose(), Text(text="b"), TagCloseClose() TagOpenOpen(wiki_markup="''"), Text(text="i"), TagCloseOpen(), Text(text="italics"), TagOpenClose(), Text(text="i"), TagCloseClose(), Text(text="none")] --- @@ -175,16 +189,44 @@ output: [Text(text="foo '"), TagOpenOpen(wiki_markup="'''"), Text(text="b"), Tag --- name: four_two -label: four ticks to open, two to end +label: four ticks to open, two to close input: "foo ''''bar'' baz" output: [Text(text="foo ''"), TagOpenOpen(wiki_markup="''"), Text(text="i"), TagCloseOpen(), Text(text="bar"), TagOpenClose(), Text(text="i"), TagCloseClose(), Text(text=" baz")] --- +name: two_three +label: two ticks to open, three to close +input: "foo ''bar''' baz" +output: [Text(text="foo "), TagOpenOpen(wiki_markup="''"), Text(text="i"), TagCloseOpen(), Text(text="bar'"), TagOpenClose(), Text(text="i"), TagCloseClose(), Text(text=" baz")] + +--- + +name: two_four +label: two ticks to open, four to close +input: "foo ''bar'''' baz" +output: [Text(text="foo "), TagOpenOpen(wiki_markup="''"), Text(text="i"), TagCloseOpen(), Text(text="bar''"), TagOpenClose(), Text(text="i"), TagCloseClose(), Text(text=" baz")] + +--- + +name: two_three_two +label: two ticks to open, three to close, two afterwards +input: "foo ''bar''' baz''" +output: [Text(text="foo "), TagOpenOpen(wiki_markup="''"), Text(text="i"), TagCloseOpen(), Text(text="bar''' baz"), TagOpenClose(), Text(text="i"), TagCloseClose()] + +--- + +name: two_four_four +label: two ticks to open, four to close, four afterwards +input: "foo ''bar'''' baz''''" +output: [Text(text="foo bar'"), TagOpenOpen(wiki_markup="'''"), Text(text="b"), TagCloseOpen(), " baz'", TagOpenClose(), Text(text="b"), TagCloseClose()] + +--- + name: seven label: seven ticks input: "'''''''seven'''''''" -output: [Text(text="''"), TagOpenOpen(wiki_markup="'"), Text(text="i"), TagCloseOpen(), TagOpenOpen(wiki_markup="'''"), Text(text="b"), TagCloseOpen(), Text(text="seven''"), TagOpenClose(), Text(text="b"), TagCloseClose(), TagOpenClose(), Text(text="i"), TagCloseClose()] +output: [Text(text="''"), TagOpenOpen(wiki_markup="''"), Text(text="i"), TagCloseOpen(), TagOpenOpen(wiki_markup="'''"), Text(text="b"), TagCloseOpen(), Text(text="seven''"), TagOpenClose(), Text(text="b"), TagCloseClose(), TagOpenClose(), Text(text="i"), TagCloseClose()] ---