| ', table, 1)
else:
break
while 1:
cel_table = re.search('((?:\|\|)+)((?:<(?:(?:(?!>).)+)>)*)\n*((?:(?:(?!\|\||<\/td>).)|\n)*\n*)', table)
if cel_table:
cel_table = cel_table.groups()
return_table = table_parser(cel_table[1], re.sub('\n', ' ', cel_table[2]), cel_table[0], number)
table = re.sub('((?:\|\|)+)((?:<(?:(?:(?!>).)+)>)*)\n*', ' | ', table, 1)
else:
break
data = re.sub('\n((?:(?:(?:(?:\|\|)+(?:(?:(?!\|\|).(?:\n)*)*))+)\|\|(?:\n)?)+)', table, data, 1)
else:
break
return data
def middle_parser(data, fol_num, syntax_num, folding_num):
global end_data
global plus_data
middle_stack = 0
middle_list = []
middle_number = 0
middle_re = re.compile('(?:{{{((?:(?:(?! |{{{|}}}|<).)*) ?)|(}}}))')
while 1:
middle_data = middle_re.search(data)
if middle_data:
middle_data = middle_data.groups()
if not middle_data[1]:
if middle_stack > 0:
middle_stack += 1
data = re.sub('(?:{{{((?:(?! |{{{|}}}|<).)*)(?P ?)|(}}}))', '{{{' + middle_data[0] + '\g', data, 1)
else:
if re.search('^(#|@|\+|\-)', middle_data[0]) and not re.search('^(#|@|\+|\-){2}|(#|@|\+|\-)\\\\', middle_data[0]):
middle_search = re.search('^(#(?:[0-9a-f-A-F]{3}){1,2})', middle_data[0])
if middle_search:
middle_list += ['span']
data = middle_re.sub('', data, 1)
else:
middle_search = re.search('^(?:#(\w+))', middle_data[0])
if middle_search:
middle_list += ['span']
data = middle_re.sub('', data, 1)
else:
middle_search = re.search('^(?:@((?:[0-9a-f-A-F]{3}){1,2}))', middle_data[0])
if middle_search:
middle_list += ['span']
data = middle_re.sub('', data, 1)
else:
middle_search = re.search('^(?:@(\w+))', middle_data[0])
if middle_search:
middle_list += ['span']
data = middle_re.sub('', data, 1)
else:
middle_search = re.search('^(\+|-)([1-5])', middle_data[0])
if middle_search:
middle_search = middle_search.groups()
if middle_search[0] == '+':
font_size = str(int(middle_search[1]) * 20 + 100)
else:
font_size = str(100 - int(middle_search[1]) * 10)
middle_list += ['span']
data = middle_re.sub('', data, 1)
else:
middle_search = re.search('^#!wiki', middle_data[0])
if middle_search:
middle_data_2 = re.search('{{{#!wiki(?: style=(?:"|')((?:(?!"|').)*)(?:"|'))?\n?', data)
if middle_data_2:
middle_data_2 = middle_data_2.groups()
else:
middle_data_2 = ['']
middle_list += ['div_end']
data = re.sub('{{{#!wiki(?: style=(?:"|')((?:(?!"|').)*)(?:"|'))?\n?', '', data, 1)
else:
middle_search = re.search('^#!syntax', middle_data[0])
if middle_search:
middle_data_2 = re.search('{{{#!syntax ((?:(?!\n).)+)\n?', data)
if middle_data_2:
middle_data_2 = middle_data_2.groups()
else:
middle_data_2 = ['python']
if syntax_num == 0:
plus_data += ''
syntax_num = 1
middle_list += ['pre']
data = re.sub('{{{#!syntax ?((?:(?!\n).)*)\n?', ' ', data, 1)
else:
middle_search = re.search('^#!folding', middle_data[0])
if middle_search:
middle_list += ['2div']
folding_data = re.search('{{{#!folding ?((?:(?!\n).)*)\n?', data)
if folding_data:
folding_data = folding_data.groups()
else:
folding_data = ['Test']
if folding_num == 0:
folding_num = 1
data = re.sub('{{{#!folding ?((?:(?!\n).)*)\n?', '' + str(folding_data[0]) + ' [do]', data, 1)
fol_num += 1
else:
middle_list += ['span']
data = middle_re.sub(' ', data, 1)
else:
middle_list += ['code']
middle_stack += 1
data = middle_re.sub('' + middle_data[0].replace('\\', '\\\\'), data, 1)
middle_number += 1
else:
if middle_list == []:
data = middle_re.sub('}}}', data, 1)
else:
if middle_stack > 0:
middle_stack -= 1
if middle_stack > 0:
data = middle_re.sub('}}}', data, 1)
else:
if middle_number > 0:
middle_number -= 1
if middle_list[middle_number] == '2div':
data = middle_re.sub('', data, 1)
elif middle_list[middle_number] == 'pre':
data = middle_re.sub('', data, 1)
else:
data = middle_re.sub('' + middle_list[middle_number] + '>', data, 1)
del(middle_list[middle_number])
else:
if middle_stack == 0:
break
else:
if middle_list == []:
data += '}}}'
else:
if middle_stack > 0:
middle_stack -= 1
if middle_stack > 0:
data += '}}}'
else:
if middle_number > 0:
middle_number -= 1
if middle_list[middle_number] == '2div':
data += ''
elif middle_list[middle_number] == 'pre':
data += ''
else:
data += '' + middle_list[middle_number] + '>'
del(middle_list[middle_number])
num = 0
while 1:
nowiki_data = re.search('((?:(?:(?!<\/code>).)*\n*)*)<\/code>', data)
if nowiki_data:
nowiki_data = nowiki_data.groups()
num += 1
end_data += [['nowiki_' + str(num), nowiki_data[0], 'code']]
data = re.sub('((?:(?:(?!<\/code>).)*\n*)*)<\/code>', '', data, 1)
else:
break
num = 0
while 1:
syntax_data = re.search('((?:(?:(?:(?!<\/code>|((?:(?:(?:(?!<\/code>|', data, 1)
else:
break
return [data, [fol_num, syntax_num, folding_num]]
def link_fix(main_link):
if re.search('^:', main_link):
main_link = re.sub('^:', '', main_link)
main_link = re.sub('^사용자:', 'user:', main_link)
main_link = re.sub('^파일:', 'file:', main_link)
main_link = re.sub('^분류:', 'category:', main_link)
other_link = re.search('(#.+)$', main_link)
if other_link:
other_link = other_link.groups()[0]
main_link = re.sub('(#.+)$', '', main_link)
else:
other_link = ''
return [main_link, other_link]
def namu(conn, data, title, main_num):
curs = conn.cursor()
global plus_data
global end_data
data = '\n' + data + '\n'
plus_data = ''
backlink = []
end_data = []
data = re.sub('
| ', data)
data = re.sub('\n', '', data)
data = re.sub('\n<\/include>', '', data)
data = re.sub('(?P<\/h[0-9]>)(\n)+', '\g', data)
data = re.sub('\n\n', '\n', data)
data = re.sub('<\/ul>\n\n', '
', data)
data = re.sub('^(\n)+', '', data)
data = re.sub('(\n)+