You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
2.2 KiB
Python
30 lines
2.2 KiB
Python
11 years ago
|
import re
|
||
|
|
||
|
class Value(str):
|
||
|
def transform(self, ruleset):
|
||
|
text = self
|
||
|
text = re.sub("`([^`]+)`", lambda x: ruleset.transform_fixed_width(Value(x.group(1))), text) # Fixed-width
|
||
|
text = re.sub("\*\*([^*]+)\*\*", lambda x: ruleset.transform_emphasis(Value(x.group(1))), text) # Emphasized
|
||
|
text = re.sub("__([^_]+)__", lambda x: ruleset.transform_strong(Value(x.group(1))), text) # Strong
|
||
|
text = re.sub("{>([^}]+)}\(([^)]+)\)", lambda x: ruleset.transform_reference(Value(x.group(1)), Value(x.group(2))), text) # Hyperlink with text
|
||
|
text = re.sub("{>([^}]+)}", lambda x: ruleset.transform_reference(Value(x.group(1)), Value(x.group(1))), text) # Hyperlink
|
||
|
text = re.sub("{([^}]+:[^}]+)}\(([^)]+)\)", lambda x: ruleset.transform_external_reference(Value(x.group(1)), Value(x.group(2))), text) # External hyperlink with text
|
||
|
text = re.sub("{([^}]+:[^}]+)}", lambda x: ruleset.transform_external_reference(Value(x.group(1)), Value(x.group(1))), text) # External hyperlink
|
||
|
text = re.sub("{<([^}]+)}\(([^)]+)\)", lambda x: ruleset.transform_external_reference(Value(x.group(1)), Value(x.group(2))), text) # Forced external hyperlink with text
|
||
|
text = re.sub("{<([^}]+)}", lambda x: ruleset.transform_external_reference(Value(x.group(1)), Value(x.group(1))), text) # Forced external hyperlink
|
||
|
return text
|
||
|
|
||
|
def clean(self):
|
||
|
text = self
|
||
|
text = re.sub("`([^`]+)`", '\\1', text) # Fixed-width
|
||
|
text = re.sub("\*\*([^*]+)\*\*", "\\1", text) # Emphasized
|
||
|
text = re.sub("__([^_]+)__", "\\1", text) # Strong
|
||
|
text = re.sub("{>([^}]+)}\(([^)]+)\)", '\\2', text) # Hyperlink with text
|
||
|
text = re.sub("{>([^}]+)}", '\\1', text) # Hyperlink
|
||
|
text = re.sub("{([^}]+:[^}]+)}\(([^)]+)\)", '\\2', text) # External hyperlink with text
|
||
|
text = re.sub("{([^}]+:[^}]+)}", '\\1', text) # External hyperlink
|
||
|
text = re.sub("{<([^}]+)}\(([^)]+)\)", '\\2', text) # Forced external hyperlink with text
|
||
|
text = re.sub("{<([^}]+)}", '\\1', text) # Forced external hyperlink
|
||
|
return text
|
||
|
|