footnote.py 3.8 KB

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