footnote.py 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import re
  2. def footnote(data, fol_num):
  3. a = 1
  4. tou = "<hr style='margin-top: 30px;' id='footnote'><div><br>"
  5. namu = []
  6. div = ''
  7. pop_re = re.compile('(?:\[\*([^\s]*)(?:\s((?:(?!\[|\]).)*))?\]|(\[각주\]))')
  8. while 1:
  9. b = pop_re.search(data)
  10. if b:
  11. results = b.groups()
  12. try:
  13. if not results[1] and results[0]:
  14. i = 0
  15. while 1:
  16. try:
  17. if namu[i] == results[0]:
  18. none_this = 0
  19. break
  20. else:
  21. i += 2
  22. except:
  23. none_this = 1
  24. break
  25. if none_this == 0:
  26. data = pop_re.sub("<sup><a href='javascript:void(0);' onclick='folding(" + str(fol_num) + ", 1);' id='rfn-" + str(a) + "'>(" + results[0] + ")</a></sup>", data, 1)
  27. div += "<div class='popup' style='display: none;' id='folding_" + str(fol_num) + "'><a onclick='folding(" + str(fol_num) + ");'" + \
  28. " href='#fn-" + str(a) + "'>(" + results[0] + ")</a> <a href='javascript:void(0);' onclick='folding(" + str(fol_num) + ");'>(X)</a> " + \
  29. namu[i + 1] + "</div>"
  30. else:
  31. data = pop_re.sub("<sup><a href='javascript:void(0);' id='rfn-" + str(a) + "'>(" + results[0] + ")</a></sup>", data, 1)
  32. else:
  33. if(results[0]):
  34. namu += [results[0]]
  35. namu += [results[1]]
  36. data = pop_re.sub("<sup><a href='javascript:void(0);' onclick='folding(" + str(fol_num) + ", 1);' id='rfn-" + str(a) + "'>(" + results[0] + ")</a></sup>", data, 1)
  37. tou += "<span id='footnote-list'><a href='#rfn-" + str(a) + "' id='fn-" + str(a) + "'>(" + results[0] + ")</a> " + results[1] + "</span><br>"
  38. div += "<div class='popup' style='display: none;' id='folding_" + str(fol_num) + "'><a onclick='folding(" + str(fol_num) + ");'" + \
  39. " href='#fn-" + str(a) + "'>(" + results[0] + ")</a> <a href='javascript:void(0);' onclick='folding(" + str(fol_num) + ");'>" + \
  40. "(X)</a> " + results[1] + "</div>"
  41. else:
  42. data = pop_re.sub('<sup><a href="javascript:void(0);" onclick="folding(' + str(fol_num) + ', 1);" id="rfn-' + str(a) + '">(' + str(a) + ')</a></sup>', data, 1)
  43. tou += "<span id='footnote-list'><a href='#rfn-" + str(a) + "' id='fn-" + str(a) + "'>(" + str(a) + ")</a> " + results[1] + "</span><br>"
  44. div += '<div class="popup" style="display: none;" id="folding_' + str(fol_num) + '"><a onclick="folding(' + str(fol_num) + ');"' + \
  45. ' href="#fn-' + str(a) + '">(' + str(a) + ')</a> <a href="javascript:void(0);" onclick="folding(' + str(fol_num) + ');">(X)</a> ' + \
  46. results[1] + '</div>'
  47. a += 1
  48. fol_num += 2
  49. except:
  50. tou += '</div>'
  51. if tou == "<hr style='margin-top: 30px;' id='footnote'><div><br></div>":
  52. tou = ""
  53. data = pop_re.sub("<br>" + tou, data, 1)
  54. tou = "<hr style='margin-top: 30px;' id='footnote'><div><br>"
  55. else:
  56. tou += '</div>'
  57. if tou == "<hr style='margin-top: 30px;' id='footnote'><div><br></div>":
  58. tou = ""
  59. break
  60. data = re.sub("\[각주\](?:(?:<br>| |\r|\n)+)?$", "", data)
  61. data = re.sub("(?:(?:<br>| |\r|\n)+)$", "", data)
  62. data += tou + div
  63. return data