from . import tool
import datetime
import html
import re
class head_render:
def __init__(self):
self.head_level = [0, 0, 0, 0, 0, 0]
self.toc_data = '' + \
'
' + \
'
TOC' + \
'
' + \
'
' + \
''
self.toc_num = 0
def __call__(self, match):
head_len_num = len(match[1])
head_len = str(head_len_num)
head_len_num -= 1
head_data = match[2]
self.head_level[head_len_num] += 1
for i in range(head_len_num + 1, 6):
self.head_level[i] = 0
self.toc_num += 1
toc_num_str = str(self.toc_num)
head_level_str_2 = '.'.join([str(i) for i in self.head_level if i != 0])
head_level_str = head_level_str_2 + '.'
self.toc_data += '
' + head_level_str + ' ' + head_data + '
'
return '
' + head_level_str + ' ' + head_data + ''
def get_toc(self):
return self.toc_data + '
'
class link_render:
def __init__(self, plus_data, include_name):
self.str_e_link_id = 0
self.plus_data = ''
self.include_name = include_name
def __call__(self, match):
str_e_link_id = str(self.str_e_link_id)
self.str_e_link_id += 1
if match[1] == '!':
file_name = ''
if re.search(r'^http(s)?:\/\/', match[3], flags = re.I):
file_src = match[3]
file_alt = match[3]
exist = '1'
else:
file_name = re.search(r'^([^.]+)\.([^.]+)$', match[3])
if file_name:
file_end = file_name.group(2)
file_name = file_name.group(1)
else:
file_name = 'Test'
file_end = 'jpg'
file_src = '/image/' + tool.sha224_replace(file_name) + '.' + file_end
file_alt = 'file:' + file_name + '.' + file_end
exist = None
return '' + \
'' + \
'' + \
''
else:
if re.search(r'^http(s)?:\/\/', match[3], flags = re.I):
self.plus_data += '' + \
'document.getElementsByName("' + self.include_name + 'set_link_' + str_e_link_id + '")[0].href = ' + \
'"' + match[3] + '";' + \
'\n' + \
''
return '' + match[2] + ''
else:
self.plus_data += '' + \
'document.getElementsByName("' + self.include_name + 'set_link_' + str_e_link_id + '")[0].href = ' + \
'"/w/' + tool.url_pas(match[3]) + '";' + \
'\n' + \
''
self.plus_data += '' + \
'document.getElementsByName("' + self.include_name + 'set_link_' + str_e_link_id + '")[0].title = ' + \
'"' + match[3] + '";' + \
'\n' + \
''
return '' + match[2] + ''
def get_plus_data(self):
return self.plus_data
def markdown(conn, data, title, include_name):
backlink = []
include_name = include_name + '_' if include_name else ''
plus_data = '' + \
'get_link_state("' + include_name + '");\n' + \
'get_file_state("' + include_name + '");\n' + \
''
data = html.escape(data)
data = data.replace('\r\n', '\n')
data = '\n' + data
head_r = r'\n(#{1,6}) ?([^\n]+)'
head_do = head_render()
data = re.sub(head_r, head_do, data)
data = head_do.get_toc() + data
link_r = r'(!)?\[((?:(?!\]\().)+)\]\(([^\]]+)\)'
link_do = link_render(plus_data, include_name)
data = re.sub(link_r, link_do, data)
plus_data = link_do.get_plus_data() + plus_data
data = re.sub(r'\*\*(?P(?:(?!\*\*).)+)\*\*', '\g', data)
data = re.sub(r'__(?P(?:(?!__).)+)__', '\g', data)
data = re.sub('^\n', '', data)
data = data.replace('\n', '
')
data = re.sub(r'(?P<\/h[0-6]>)
', '\g', data)
return [data, plus_data, backlink]