mid_pas.py 4.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import re
  2. from urllib import parse
  3. def mid_pas(data, fol_num, include, in_c, toc_y):
  4. syntax = 0
  5. folding_test = 0
  6. com = re.compile("{{{((?:(?!{{{|}}}).)*)}}}", re.DOTALL)
  7. while 1:
  8. is_it = com.search(data)
  9. if is_it:
  10. it_d = is_it.groups()[0]
  11. big_a = re.compile("^\+([1-5]) (.*)$", re.DOTALL)
  12. big = big_a.search(it_d)
  13. small_a = re.compile("^\-([1-5]) (.*)$", re.DOTALL)
  14. small = small_a.search(it_d)
  15. color_b = re.compile("^(#(?:[0-9a-f-A-F]{3}){1,2}) (.*)$", re.DOTALL)
  16. color_2 = color_b.search(it_d)
  17. color_c = re.compile("^#(\w+) (.*)$", re.DOTALL)
  18. color_3 = color_c.search(it_d)
  19. back_a = re.compile("^@((?:[0-9a-f-A-F]{3}){1,2}) (.*)$", re.DOTALL)
  20. back = back_a.search(it_d)
  21. back_c = re.compile("^@(\w+) (.*)$", re.DOTALL)
  22. back_3 = back_c.search(it_d)
  23. include_out_a = re.compile("^#!noin ?(.*)$", re.DOTALL)
  24. include_out = include_out_a.search(it_d)
  25. div_a = re.compile("^#!wiki style=(?:"|')((?:(?!"|').)*)(?:"|')\r\n(.*)$", re.DOTALL)
  26. div = div_a.search(it_d)
  27. html_a = re.compile("^#!html ?(.*)$", re.DOTALL)
  28. html_d = html_a.search(it_d)
  29. fol_a = re.compile("^#!folding ((?:(?!\n).)*)\n(.*)$", re.DOTALL)
  30. fol = fol_a.search(it_d)
  31. syn_a = re.compile("^#!syntax ((?:(?!\n).)*)\n(.*)$", re.DOTALL)
  32. syn = syn_a.search(it_d)
  33. if big:
  34. big_d = big.groups()
  35. data = com.sub('<span style="font-size: ' + str(int(big_d[0]) * 20 + 100) + '%;">' + big_d[1] + '</span>', data, 1)
  36. elif small:
  37. sm_d = small.groups()
  38. data = com.sub('<span style="font-size: ' + str(100 - int(sm_d[0]) * 10) + '%;">' + sm_d[1] + '</span>', data, 1)
  39. elif color_2:
  40. c_d_2 = color_2.groups()
  41. data = com.sub('<span style="color: ' + c_d_2[0] + '">' + c_d_2[1] + '</span>', data, 1)
  42. elif color_3:
  43. c_d_3 = color_3.groups()
  44. data = com.sub('<span style="color: ' + c_d_3[0] + '">' + c_d_3[1] + '</span>', data, 1)
  45. elif back:
  46. back_d_1 = back.groups()
  47. data = com.sub('<span style="background: #' + back_d_1[0] + '">' + back_d_1[1] + '</span>', data, 1)
  48. elif back_3:
  49. back_d_3 = back_3.groups()
  50. data = com.sub('<span style="background: ' + back_d_3[0] + '">' + back_d_3[1] + '</span>', data, 1)
  51. elif div:
  52. div_d = div.groups()
  53. data = com.sub('<div style="' + div_d[0] + '">' + div_d[1] + '</div>', data, 1)
  54. elif html_d:
  55. data = com.sub(html_d.groups()[0], data, 1)
  56. elif fol:
  57. fol_d = fol.groups()
  58. if toc_y != 0:
  59. data = com.sub("<div>" + fol_d[0] + " <div id='folding_" + str(fol_num + 1) + "' style='display: inline-block;'>" + "[<a href='javascript:void(0);' onclick='folding(" + str(fol_num + 1) + "); folding(" + str(fol_num + 2) + "); folding(" + str(fol_num) + ");'>펼치기</a>]</div>" + "<div id='folding_" + str(fol_num + 2) + "' style='display: none;'>[" + "<a href='javascript:void(0);' onclick='folding(" + str(fol_num + 1) + "); folding(" + str(fol_num + 2) + ");" + " folding(" + str(fol_num) + ");'>접기</a>]</div><div id='folding_" + str(fol_num) + "' style='display: none;'>" + "<br>" + fol_d[1] + "</div></div>", data, 1)
  60. fol_num += 3
  61. else:
  62. data = com.sub("<div>" + fol_d[0] + "<br><br>" + fol_d[1] + "</div>", data, 1)
  63. elif syn:
  64. if syntax == 0:
  65. data += '<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css"><script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script><script>hljs.initHighlightingOnLoad();</script>'
  66. syntax = 1
  67. syn_d = syn.groups()
  68. tax_d = syn_d[1].replace(' ', '<space>')
  69. tax_d = tax_d.replace('\r\n', '<isbr>')
  70. data = com.sub('<pre id="syntax"><code class="' + syn_d[0] + '"><code>' + tax_d + '</code></code></pre>', data, 1)
  71. elif include_out:
  72. if (include or in_c) == 1:
  73. data = com.sub("", data, 1)
  74. else:
  75. data = com.sub(include_out.groups()[0], data, 1)
  76. else:
  77. data = com.sub(it_d, data, 1)
  78. else:
  79. break
  80. return [data, fol_num]