more development to coloring

This commit is contained in:
q
2016-06-05 22:21:50 +03:00
parent 7b4e845052
commit 362cab2f80
2 changed files with 37 additions and 17 deletions

View File

@@ -8,6 +8,7 @@ import bc
__author__ = "Ville Rantanen <ville.q.rantanen@gmail.com>"
__version__ = "0.1"
''' Rules modified from mistune project '''
def setup_options():
''' Create command line options '''
@@ -32,23 +33,29 @@ Special syntaxes:
return opts
block_match={
'block_code': (re.compile(r'^( {4}[^*])(.*)$'),'{}\\1\\2','${c}'),
'multiline_code' : (re.compile(r'^ *(`{3,}|~{3,}) *(\S*)?'),'${c}\\1\\2','${c}'), # ```lang
'block_quote': (re.compile(r'^ *>'),False),
'block_code': (re.compile(r'^( {4}[^*])(.*)$'),'${c}\\1\\2','${Z}${c}'),
'multiline_code' : (re.compile(r'^ *(`{3,}|~{3,}) *(\S*)?'),'${c}\\1\\2','${Z}${c}'), # ```lang
'block_quote': (re.compile(r'^(>[ >]* )'),'${K}\\1${Z}','${Z}'),
'hrule': (re.compile(r'^ {0,3}[-*_]([-*_]){2,}$'),False),
'hrule': (re.compile(r'^ {0,3}[-*_]([-*_]){2,}$'),False,'${Z}'),
'heading' : (re.compile(r'^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)'),'${W}\\1 \\2','${W}'),
'lheading' : (re.compile(r'^(=+|-+)$'),'${W}\\1','${W}'),
'list_bullet':(re.compile(r'^( *)([*+-]|\d+\.)( +)'),'\\1${y}\\2${Z}\\3'),
'text': (re.compile(r'^[^\n]+'),False),
'empty': (re.compile(r'^$'),False)
'list_bullet':(re.compile(r'^( *)([*+-]|\d+\.)( +)'),'\\1${y}\\2${Z}\\3','${Z}'),
'text': (re.compile(r'^[^\n]+'),False,'${Z}'),
'empty': (re.compile(r'^$'),False,'${Z}'),
}
blocks=['block_code', 'block_quote', 'multiline_code','hrule', 'heading','lheading','list_bullet', 'text', 'empty']
inline_match={
'code': (re.compile(r'(`+)([^`]+)(`+)'),'${c}\\1\\2\\3') # `code`
'bold1': (re.compile(r'(^| )(_[^_]+_)'), '${W}\\1\\2'), # _bold_
'bold2': (re.compile(r'(^| )(\*{1,2}[^\*]+\*{1,2})'), '${W}\\1\\2'), # **bold**
'code': (re.compile(r'([`]+[^`]+[`]+)'),'${c}\\1'), # `code`
'link': (re.compile(r'(\[[^\]]+\]\([^\)]+\))'),'${B}${U}\\1'), # [text](link)
'image': (re.compile(r'(!\[[^\]]+\]\([^\)]+\))'),'${r}\\1'), # ![text](image)
'underline': (re.compile(r'(^|\W)(__)([^_]+)(__)'), '\\1\\2${U}\\3${Z}\\4'), # __underline__
'strikethrough': (re.compile(r'(~~)([^~]+)(~~)'),'\\1${st}\\2${so}\\3'), # ~~strike~~
}
inlines=['code']
inlines=['bold1','bold2','code','image','link','underline','strikethrough']
bc=bc.ansi()
@@ -80,12 +87,14 @@ for row in f:
if not multiline_block:
sys.stdout.write(bc.Z)
#print(multiline_block)
#print(block)
#~ print(block)
if block_match[block][1]:
row=block_match[block][0].sub(block_match[block][1],row)
for match in inlines:
if inline_match[match][0].match(row):
pass
if not (multiline_block or match=='block_code'):
for match in inlines:
if inline_match[match][0].search(row):
row=inline_match[match][0].sub(inline_match[match][1]+block_match[block][2],row)
#print(row)
if opts.color:
colored=bc.color_string(row)