diff options
Diffstat (limited to 'rst_parser.lua')
-rw-r--r-- | rst_parser.lua | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/rst_parser.lua b/rst_parser.lua index dec4b6b..26636a1 100644 --- a/rst_parser.lua +++ b/rst_parser.lua @@ -719,12 +719,12 @@ local parser = P{ -- Field lists (for bibliographies etc.) -------------------------------------------------------------------------------- - field_list = Cs(V"field"^1) - * V"blank_line"^1 + field_list = Cs(V"field" + * (V"blank_line"^-1 * V"field")^0) + * V"end_block" / rst.field_list, field = Ct(V"field_marker" - * V"whitespace" * V"field_body") / rst.field, @@ -734,14 +734,18 @@ local parser = P{ field_name = (V"escaped_colon" + (1 - V"colon"))^1, - field_body = C((1 - V"eol")^1 * V"eol" - * V"indented_lines"^-1), + field_body = V"field_single" + V"field_multi", + + field_single = C((1 -V"eol")^1) * V"eol", + + field_multi = C((1 - V"eol")^0 * V"eol" + * V"indented_lines"^-1), -------------------------------------------------------------------------------- -- Definition lists -------------------------------------------------------------------------------- - definition_list = Ct(V"definition_item" + definition_list = Ct((V"definition_item" - V"comment") * (V"blank_line" * V"definition_item")^0) * V"end_block" / rst.deflist @@ -753,7 +757,8 @@ local parser = P{ * Ct(V"definition_def")) , - definition_term = -#V"space" * (1 - V"eol" - V"definition_classifier_separator")^1 + definition_term = #(1 - V"space" - V"field_marker") + * (1 - V"eol" - V"definition_classifier_separator")^1 , definition_classifier_separator = V"space" * V"colon" * V"space", |