2
0

footnote.py 4.3 KB

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