mark.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. from .namumark import namumark
  2. from .tool import *
  3. import re
  4. import os
  5. import html
  6. import sqlite3
  7. import asyncio
  8. import threading
  9. import urllib.parse
  10. conn = ''
  11. curs = ''
  12. if os.path.exists('route/tool/custom.py'):
  13. from .custom import custom_mark
  14. else:
  15. def custom_mark(conn, doc_data, doc_name, data_in):
  16. return [
  17. doc_data,
  18. '',
  19. []
  20. ]
  21. def load_conn2(data):
  22. global conn
  23. global curs
  24. conn = data
  25. curs = conn.cursor()
  26. def send_parser(data):
  27. if not re.search(r'^<br>$', data):
  28. data = html.escape(data)
  29. data = re.sub(r'javascript:', '', data, flags = re.I)
  30. data = data.replace('&lt;br&gt;', '')
  31. link_re = re.compile(r'&lt;a(?: (?:(?:(?!&gt;).)*))?&gt;(?P<in>(?:(?!&lt;).)*)&lt;\/a&gt;')
  32. link_data = link_re.findall(data)
  33. for i in link_data:
  34. data = link_re.sub('<a href="/w/' + urllib.parse.quote(i).replace('/','%2F') + '">' + i + '</a>', data, 1)
  35. return data
  36. def render_do(doc_name, doc_data, data_type, data_in):
  37. data_in = None if data_in == '' else data_in
  38. curs.execute(db_change('select data from other where name = "markup"'))
  39. rep_data = curs.fetchall()
  40. if rep_data[0][0] in ('namumark', 'js_onmark'):
  41. data_in = (data_in + '_') if data_in else ''
  42. data_end = [
  43. '<div class="render_content" id="' + data_in + 'render_content">' + html.escape(doc_data) + '</div>',
  44. '''
  45. do_onmark_render(
  46. test_mode = 0,
  47. name_id = "''' + data_in + '''render_content",
  48. name_include = "''' + data_in + '''",
  49. name_doc = "''' + doc_name.replace('"', '//"') + '''",
  50. );
  51. ''',
  52. []
  53. ]
  54. elif rep_data[0][0] == 'custom':
  55. data_end = custom_mark(
  56. conn,
  57. doc_data,
  58. doc_name,
  59. data_in
  60. )
  61. else:
  62. data_end = [
  63. doc_data,
  64. '',
  65. []
  66. ]
  67. if data_type == 'backlink':
  68. if data_end[2] == []:
  69. curs.execute(db_change("insert into back (title, link, type) values ('test', ?, 'nothing')"), [doc_name])
  70. else:
  71. curs.executemany(db_change("insert into back (link, title, type) values (?, ?, ?)"), data_end[2])
  72. curs.execute(db_change("delete from back where title = ? and type = 'no'"), [doc_name])
  73. conn.commit()
  74. else:
  75. if data_type == 'api_view':
  76. return [
  77. data_end[0],
  78. data_end[1]
  79. ]
  80. else:
  81. return data_end[0] + '<script>' + data_end[1] + '</script>'