1.1 --- a/moinformat/__init__.py Sat Apr 29 23:04:30 2017 +0200
1.2 +++ b/moinformat/__init__.py Sun Apr 30 01:43:33 2017 +0200
1.3 @@ -32,9 +32,16 @@
1.4
1.5 # Region contents:
1.6 # Line-oriented patterns:
1.7 - "break" : r"^(\s*?)\n", # blank line
1.8 - "heading" : r"^(\s*)(?P<x>=+)(\s+)(?=.*?\s+(?P=x)\s*\n)", # [ws...] =... ws... expecting headingend
1.9 - "listitem" : r"^((\s+)([*]|\d+[.]))", # indent (list-item or number-item)
1.10 + # blank line
1.11 + "break" : r"^(\s*?)\n",
1.12 + # [ws...] =... ws... expecting headingend
1.13 + "heading" : r"^(\s*)(?P<x>=+)(\s+)(?=.*?\s+(?P=x)\s*\n)",
1.14 + # indent (list-item or number-item or alpha-item or roman-item or dot-item)
1.15 + "listitem" : r"^(\s+)(\*)(\s*)",
1.16 + "listitem_num" : r"^(\s+)(\d+\.)(\s+)",
1.17 + "listitem_alpha": r"^(\s+)([aA]\.)(\s+)",
1.18 + "listitem_roman": r"^(\s+)([iI]\.)(\s+)",
1.19 + "listitem_dot" : r"^(\s+)(\.)(\s*)",
1.20
1.21 # Region contents:
1.22 # Inline patterns:
1.23 @@ -164,7 +171,9 @@
1.24 "Parse the data provided by 'items' to populate a wiki 'region'."
1.25
1.26 new_block(region)
1.27 - parse_region_details(items, region, ["break", "heading", "listitem", "regionstart", "regionend", "rule"])
1.28 + parse_region_details(items, region, [
1.29 + "break", "heading", "listitem", "listitem_num", "listitem_alpha",
1.30 + "listitem_roman", "listitem_dot", "regionstart", "regionend", "rule"])
1.31
1.32 def parse_region_opaque(items, region):
1.33
1.34 @@ -219,8 +228,9 @@
1.35
1.36 # Mark any previous block as not being the final one in a sequence.
1.37
1.38 - block = region.nodes[-1]
1.39 - block.final = False
1.40 + block = region.last()
1.41 + if isinstance(block, Block):
1.42 + block.final = False
1.43 new_block(region)
1.44
1.45 def parse_heading(items, region):
1.46 @@ -249,7 +259,10 @@
1.47
1.48 "Handle a list item marker within 'region'."
1.49
1.50 - item = ListItem([])
1.51 + indent = len(items.read_match(1))
1.52 + marker = items.read_match(2)
1.53 + space = items.read_match(3)
1.54 + item = ListItem([], indent, marker, space)
1.55 parse_region_details(items, item, ["listitemend"])
1.56 region.append(item)
1.57 new_block(region)
1.58 @@ -299,6 +312,10 @@
1.59 "headingend" : parse_heading_end,
1.60 "listitemend" : parse_listitem_end,
1.61 "listitem" : parse_listitem,
1.62 + "listitem_alpha" : parse_listitem,
1.63 + "listitem_dot" : parse_listitem,
1.64 + "listitem_num" : parse_listitem,
1.65 + "listitem_roman" : parse_listitem,
1.66 "regionstart" : parse_section,
1.67 "regionend" : parse_section_end,
1.68 "rule" : parse_rule,