include_pas.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. from . import html_pas
  2. from . import link
  3. from . import mid_pas
  4. from . import toc_pas
  5. import sqlite3
  6. from urllib import parse
  7. import re
  8. def url_pas(data):
  9. return parse.quote(data).replace('/','%2F')
  10. def include_pas(conn, data, title, in_c, num, toc_y, fol_num):
  11. curs = conn.cursor()
  12. category = ''
  13. backlink = []
  14. data = data.replace('\\,', '#comma#')
  15. include = re.compile("\[include\(((?:(?!\)\]|,).)*)((?:(?:,\s?(?:(?!\)\]).)*))+)?\)\]((?:(?!\n))*)")
  16. m = include.findall(data)
  17. for results in m:
  18. if results[0] == title:
  19. data = include.sub("<b>" + results[0] + "</b>", data, 1)
  20. else:
  21. backlink += [[title, results[0], 'include']]
  22. curs.execute("select data from data where title = ?", [results[0]])
  23. in_con = curs.fetchall()
  24. if(in_con):
  25. in_data = in_con[0][0]
  26. in_data = include.sub("", in_data)
  27. in_data = re.sub("\[\[(분류:(?:(?:(?!\]\]|#include).)+))\]\]", "", in_data)
  28. in_data = re.sub("\n", "\r\n", re.sub("\r\n", "\n", in_data))
  29. in_data = html_pas.html_pas(in_data)
  30. var_d = mid_pas.mid_pas(in_data, fol_num, 1, in_c, toc_y)
  31. var_d2 = link.link(conn, title, var_d[0], 0, category, backlink)
  32. in_data = var_d2[0]
  33. category = var_d2[1]
  34. fol_num = var_d[1]
  35. if results[1]:
  36. a = results[1]
  37. while 1:
  38. g = re.search("([^= ,]*)\=([^,]*)", a)
  39. if g:
  40. result = g.groups()
  41. in_data = re.sub("@" + result[0] + "@", result[1].replace('#comma#', ','), in_data)
  42. a = re.sub("([^= ,]*)\=([^,]*)", "", a, 1)
  43. else:
  44. break
  45. in_data = toc_pas.toc_pas(in_data, results[0], num, toc_y)
  46. if results[2]:
  47. test = '<br>'
  48. else:
  49. if re.search('\|\|', in_data):
  50. test = '\n'
  51. else:
  52. test = ''
  53. data = include.sub('#no-br#<a id="include_link" href="/w/' + url_pas(results[0]) + '">[' + results[0] + ' 이동]</a><br><span>' + in_data + '</span>' + test, data, 1)
  54. else:
  55. data = include.sub("<a class=\"not_thing\" href=\"/w/" + url_pas(results[0]) + "\">" + results[0] + "</a>", data, 1)
  56. data = data.replace('#comma#', '&#92;&#92;,')
  57. return [data, category, fol_num, backlink]