func_mark.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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 = re.sub(r'#([^#]+)$', '', i)
  21. if re.search(r'^(?:분류|category):', data_link_in):
  22. data_link_end += [[
  23. doc_name,
  24. re.sub(r'^분류:', 'category:', data_link_in),
  25. 'cat'
  26. ]]
  27. elif re.search(r'^(?:파일|file):', data_link_in):
  28. data_link_end += [[
  29. doc_name,
  30. re.sub(r'^파일:', 'file:', data_link_in),
  31. 'file'
  32. ]]
  33. elif data_link_in[0] == ':':
  34. data_link_end += [[
  35. doc_name,
  36. re.sub(r'^:', '', data_link_in),
  37. ''
  38. ]]
  39. elif data_link_in[0] == '/':
  40. data_link_end += [[
  41. doc_name,
  42. doc_name + data_link_in,
  43. ''
  44. ]]
  45. elif re.search(r'^\.\.\/', data_link_in):
  46. data_link_in = re.sub(r'^\.\.\/', '', data_link_in)
  47. data_link_end += [[
  48. doc_name,
  49. re.sub('\/[^/]+$', '', doc_name) + ('/' + data_link_in if data_link_in != '' else ''),
  50. ''
  51. ]]
  52. else:
  53. data_link_end += [[
  54. doc_name,
  55. data_link_in,
  56. ''
  57. ]]
  58. else:
  59. data_link_end = [[]]
  60. return data_link_end
  61. def render_do(doc_name, doc_data, data_type, data_in):
  62. data_in = None if data_in == '' else data_in
  63. curs.execute(db_change('select data from other where name = "markup"'))
  64. rep_data = curs.fetchall()
  65. rep_data = rep_data[0][0] if rep_data else 'namumark'
  66. if data_type != 'backlink':
  67. if rep_data == 'namumark':
  68. data_in = (data_in + '_') if data_in else ''
  69. data_end = [
  70. '<div class="render_content" id="' + data_in + 'render_content">' + html.escape(doc_data) + '</div>',
  71. '''
  72. do_onmark_render(
  73. test_mode = "normal",
  74. name_id = "''' + data_in + '''render_content",
  75. name_include = "''' + data_in + '''",
  76. name_doc = "''' + doc_name.replace('"', '//"') + '''",
  77. );
  78. ''',
  79. []
  80. ]
  81. else:
  82. data_end = [
  83. doc_data,
  84. '',
  85. []
  86. ]
  87. if data_type == 'api_view':
  88. return [
  89. data_end[0],
  90. data_end[1]
  91. ]
  92. else:
  93. return data_end[0] + '<script>' + data_end[1] + '</script>'
  94. else:
  95. # backlink = backlink_generate(rep_data, html.escape(doc_data), doc_name)
  96. backlink = []
  97. if backlink == []:
  98. curs.execute(db_change("insert into back (title, link, type) values ('test', ?, 'nothing')"), [doc_name])
  99. else:
  100. curs.executemany(db_change("insert into back (link, title, type) values (?, ?, ?)"), backlink)
  101. curs.execute(db_change("delete from back where title = ? and type = 'no'"), [doc_name])
  102. conn.commit()