func_mark.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. import os
  2. import html
  3. import sqlite3
  4. import threading
  5. from .func_tool import *
  6. # 커스텀 마크 언젠간 다시 추가 예정
  7. conn = ''
  8. curs = ''
  9. def load_conn2(data):
  10. global conn
  11. global curs
  12. conn = data
  13. curs = conn.cursor()
  14. def backlink_generate(data_markup, doc_data, doc_name):
  15. if data_markup == 'namumark':
  16. link_re = re.compile(r'\[\[(?!https?:\/\/)((?:(?!\[\[|\]\]|\|).)+)(?:\]\]|\|)', re.I)
  17. data_link = link_re.findall(doc_data)
  18. data_link_end = []
  19. for i in data_link:
  20. data_link_in = i
  21. if data_link_in[0] === '#':
  22. continue
  23. data_link_in = re.sub(r'([^/])#(?:[^#]*)$', '\1')
  24. data_link_in = re.sub(r'#([^#]+)$', '', i)
  25. if re.search(r'^(?:분류|category):', data_link_in):
  26. data_link_end += [[
  27. doc_name,
  28. re.sub(r'^분류:', 'category:', data_link_in),
  29. 'cat'
  30. ]]
  31. elif re.search(r'^(?:파일|file):', data_link_in):
  32. data_link_end += [[
  33. doc_name,
  34. re.sub(r'^파일:', 'file:', data_link_in),
  35. 'file'
  36. ]]
  37. elif data_link_in[0] == ':':
  38. data_link_end += [[
  39. doc_name,
  40. re.sub(r'^:', '', data_link_in),
  41. ''
  42. ]]
  43. elif data_link_in[0] == '/':
  44. data_link_end += [[
  45. doc_name,
  46. doc_name + data_link_in,
  47. ''
  48. ]]
  49. elif re.search(r'^\.\.\/', data_link_in):
  50. data_link_in = re.sub(r'^\.\.\/', '', data_link_in)
  51. data_link_end += [[
  52. doc_name,
  53. re.sub('\/[^/]+$', '', doc_name) + ('/' + data_link_in if data_link_in != '' else ''),
  54. ''
  55. ]]
  56. else:
  57. data_link_end += [[
  58. doc_name,
  59. data_link_in,
  60. ''
  61. ]]
  62. else:
  63. data_link_end = [[]]
  64. return data_link_end
  65. def render_do(doc_name, doc_data, data_type, data_in):
  66. data_in = None if data_in == '' else data_in
  67. curs.execute(db_change('select data from other where name = "markup"'))
  68. rep_data = curs.fetchall()
  69. rep_data = rep_data[0][0] if rep_data else 'namumark'
  70. if data_type != 'backlink':
  71. if rep_data == 'namumark':
  72. data_in = (data_in + '_') if data_in else ''
  73. data_end = [
  74. '<div class="render_content" id="' + data_in + 'render_content">' + html.escape(doc_data) + '</div>',
  75. '''
  76. do_onmark_render(
  77. test_mode = "normal",
  78. name_id = "''' + data_in + '''render_content",
  79. name_include = "''' + data_in + '''",
  80. name_doc = "''' + doc_name.replace('"', '//"') + '''",
  81. );
  82. ''',
  83. []
  84. ]
  85. else:
  86. data_end = [
  87. doc_data,
  88. '',
  89. []
  90. ]
  91. if data_type == 'api_view':
  92. return [
  93. data_end[0],
  94. data_end[1]
  95. ]
  96. else:
  97. return data_end[0] + '<script>' + data_end[1] + '</script>'
  98. else:
  99. # backlink = backlink_generate(rep_data, html.escape(doc_data), doc_name)
  100. backlink = []
  101. if backlink == []:
  102. curs.execute(db_change("insert into back (title, link, type) values ('test', ?, 'nothing')"), [doc_name])
  103. else:
  104. curs.executemany(db_change("insert into back (link, title, type) values (?, ?, ?)"), backlink)
  105. curs.execute(db_change("delete from back where title = ? and type = 'no'"), [doc_name])
  106. conn.commit()