diff options
-rw-r--r-- | rst_context.lua | 7 | ||||
-rw-r--r-- | rst_parser.lua | 31 |
2 files changed, 20 insertions, 18 deletions
diff --git a/rst_context.lua b/rst_context.lua index a46e0a2..3107a29 100644 --- a/rst_context.lua +++ b/rst_context.lua @@ -740,6 +740,11 @@ function rst_context.option_item (tab) ]], tab[1], tab[2]) end +function rst_context.test(str) + print("This:>>"..str.."<<") + return ":" +end + function rst_context.literal_block (str, included) local indent = P" "^1 local stripme = indent:match(str) or 0 @@ -756,8 +761,6 @@ function rst_context.literal_block (str, included) } str = strip:match(str) - --strip:print() -- grammar consists of 45 rules only; wheras a plain - -- pattern has 60+ str = [[ \starttyping[lines=hyphenated] diff --git a/rst_parser.lua b/rst_parser.lua index 46142ba..f5e3f28 100644 --- a/rst_parser.lua +++ b/rst_parser.lua @@ -988,18 +988,12 @@ local parser = P{ -- Paragraphs * Inline Markup -------------------------------------------------------------------------------- - --paragraph = V"par_setindent" - --* Ct(C((1 - V"eol")^1) * V"eol" - --* (V"par_matchindent" * C((1 - V"eol")^1) * V"eol")^0) - --* V"end_block" - --/ rst.paragraph, - paragraph = Ct(V"par_first" * V"par_other"^0) * V"end_block" / rst.paragraph, - par_first = V"par_setindent" * C((1 - V"eol")^1) * V"eol", + par_first = V"par_setindent" * C((1 - V"literal_block_shorthand" - V"eol")^1) * V"eol", par_other = V"par_matchindent" * C((1 - V"literal_block_shorthand" - V"eol")^1) @@ -1034,20 +1028,25 @@ local parser = P{ end) , - --literal_block_shorthand = ((V"colon" * V"space"^1)^-1 - --* V"double_colon") / ":" - --* (V"eol" * V"blank_line" / "") - --, - - literal_block_shorthand = (((V"double_colon" * V"space"^0) - + (V"colon" * V"space"^1 * V"double_colon")) + literal_block_shorthand = Cs(((V"colon" * V"space" * V"double_colon") + + V"double_colon") + * V"whitespace"^0 * V"eol" - * V"blank_line" / ":") + * V"blank_line") + -- The \unskip is necessary because the lines of a + -- paragraph get concatenated from a table with a + -- space as separator. And the literal block is + -- treated as one such line, hence it would be + -- preceded by a space. As the ":" character + -- always follows a non-space this should be a + -- safe, albeit unpleasant, hack. If you don't + -- agree then file a bug report and I'll look into + -- it. + / "\\\\unskip:" , literal_block_markerless = Cs(V"literal_block_lines" * (V"blank_line"^1 * V"literal_block_lines")^0) - --* V"end_block" * V"blank_line" / rst.included_literal_block , |