1.1 --- a/moinformat/parsers/moin.py Tue Jul 31 19:14:38 2018 +0200
1.2 +++ b/moinformat/parsers/moin.py Tue Jul 31 19:15:48 2018 +0200
1.3 @@ -35,12 +35,12 @@
1.4
1.5 # Document tree nodes.
1.6
1.7 -from moinformat.tree.moin import Break, DefItem, DefTerm, FontStyle, Heading, \
1.8 - Larger, LineBreak, Link, List, ListItem, \
1.9 - Macro, Monospace, Region, Rule, Smaller, \
1.10 - Strikethrough, Subscript, Superscript, Table, \
1.11 - TableAttr, TableAttrs, TableCell, TableRow, \
1.12 - Text, Underline
1.13 +from moinformat.tree.moin import Anchor, Break, DefItem, DefTerm, FontStyle, \
1.14 + Heading, Larger, LineBreak, Link, List, \
1.15 + ListItem, Macro, Monospace, Region, Rule, \
1.16 + Smaller, Strikethrough, Subscript, \
1.17 + Superscript, Table, TableAttr, TableAttrs, \
1.18 + TableCell, TableRow, Text, Underline
1.19
1.20 join = "".join
1.21
1.22 @@ -481,6 +481,11 @@
1.23
1.24 # Complete inline pattern handlers.
1.25
1.26 + def parse_anchor(self, region):
1.27 + target = self.match_group("target")
1.28 + anchor = Anchor(target)
1.29 + region.append_inline(anchor)
1.30 +
1.31 def parse_linebreak(self, region):
1.32 region.append_inline(LineBreak())
1.33
1.34 @@ -619,6 +624,10 @@
1.35 # Complete inline patterns are for markup features that do not support
1.36 # arbitrary content within them:
1.37
1.38 + "anchor" : join((r"\(\(", # ((
1.39 + group("target", ".*?"), # target
1.40 + r"\)\)")), # ))
1.41 +
1.42 "linebreak" : r"\\\\", # \\
1.43
1.44 "link" : join((r"\[\[", # [[
1.45 @@ -706,8 +715,9 @@
1.46 ]
1.47
1.48 inline_pattern_names = [
1.49 - "fontstyle", "larger", "linebreak", "link", "macro", "monospace",
1.50 - "regionstart", "smaller", "strike", "sub", "super", "underline",
1.51 + "anchor", "fontstyle", "larger", "linebreak", "link", "macro",
1.52 + "monospace", "regionstart", "smaller", "strike", "sub", "super",
1.53 + "underline",
1.54 ]
1.55
1.56 list_pattern_names = [
1.57 @@ -740,6 +750,7 @@
1.58
1.59 handlers = {
1.60 None : end_region,
1.61 + "anchor" : parse_anchor,
1.62 "attrname" : parse_attrname,
1.63 "break" : parse_break,
1.64 "colour" : parse_colour,