summaryrefslogtreecommitdiff
path: root/rst_parser.lua
diff options
context:
space:
mode:
Diffstat (limited to 'rst_parser.lua')
-rw-r--r--rst_parser.lua19
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",