func_mark.py 4.0 KB

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