1.1 --- a/moinformat/__init__.py Sat Apr 29 17:47:03 2017 +0200
1.2 +++ b/moinformat/__init__.py Sat Apr 29 18:20:55 2017 +0200
1.3 @@ -19,7 +19,7 @@
1.4 this program. If not, see <http://www.gnu.org/licenses/>.
1.5 """
1.6
1.7 -from moinformat.tree import Region, Block, ListItem, Text
1.8 +from moinformat.tree import Block, ListItem, Region, Rule, Text
1.9 import re
1.10
1.11 # Regular expressions.
1.12 @@ -33,6 +33,7 @@
1.13 # Region contents:
1.14 "break" : (r"^(\s*?)\n", re.MULTILINE), # blank line
1.15 "listitem" : (r"^((\s+)([*]|\d+[.]))", re.MULTILINE), # indent (list-item or number-item)
1.16 + "rule" : (r"(-----*)", 0), # ----...
1.17
1.18 # List contents:
1.19 "listitemend" : (r"^", re.MULTILINE), # next line
1.20 @@ -155,7 +156,7 @@
1.21 "Parse the data provided by 'items' to populate a wiki 'region'."
1.22
1.23 new_block(region)
1.24 - parse_region_details(items, region, ["break", "listitem", "regionstart", "regionend"])
1.25 + parse_region_details(items, region, ["break", "listitem", "regionstart", "regionend", "rule"])
1.26
1.27 def parse_region_opaque(items, region):
1.28
1.29 @@ -229,6 +230,15 @@
1.30 region.append(item)
1.31 new_block(region)
1.32
1.33 +def parse_rule(items, region):
1.34 +
1.35 + "Handle a horizontal rule within 'region'."
1.36 +
1.37 + length = len(items.read_match(1))
1.38 + rule = Rule(length)
1.39 + region.append(rule)
1.40 + new_block(region)
1.41 +
1.42 def parse_section(items, region):
1.43
1.44 "Handle the start of a new section within 'region'."
1.45 @@ -259,6 +269,7 @@
1.46 "listitem" : parse_listitem,
1.47 "regionstart" : parse_section,
1.48 "regionend" : parse_section_end,
1.49 + "rule" : parse_rule,
1.50 }
1.51
1.52 def new_block(region):