render_simple.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. "use strict";
  2. function opennamu_do_render_simple(name_ele) {
  3. let skin_set_data = document.getElementById(name_ele).innerHTML;
  4. // 목차 구현
  5. let toc_all_data = '<div id="toc"><span id="toc_title">TOC</span><br>';
  6. let split_toc;
  7. let toc_data;
  8. let i = 1;
  9. while(1) {
  10. toc_data = skin_set_data.match(/<h[1-6]>([^<>]+)<\/h[1-6]>/);
  11. if(toc_data) {
  12. split_toc = toc_data[1].match(/^([^ ]+)(.+)/);
  13. toc_all_data += '' +
  14. '<br>' +
  15. '<span style="margin-left: ' + String(((toc_data[1].match(/\./g) || []).length - 1) * 10) + 'px;">' +
  16. '<a href="#toc_' + String(i) + '">' + split_toc[1] + '</a>' + split_toc[2] +
  17. '</span>' +
  18. '';
  19. skin_set_data = skin_set_data.replace(
  20. /<(h[1-6])>([^<>]+)<\/h[1-6]>/,
  21. '<$1 id="toc_' + String(i) + '"><a href="#toc">' + split_toc[1] + '</a>' + split_toc[2] + '</$1>'
  22. );
  23. i += 1;
  24. } else {
  25. break;
  26. }
  27. }
  28. skin_set_data = toc_all_data + '</div>' + skin_set_data;
  29. // 각주 구현
  30. var note_list = {};
  31. var plus_note;
  32. i = 1;
  33. while(1) {
  34. toc_data = skin_set_data.match(/<sup>([^<>]+)<\/sup>/);
  35. if(toc_data) {
  36. if(!note_list[toc_data[1]]) {
  37. note_list[toc_data[1]] = [String(i), 0];
  38. } else {
  39. note_list[toc_data[1]][1] += 1;
  40. }
  41. if(note_list[toc_data[1]][1] != 0) {
  42. plus_note = '_' + String(note_list[toc_data[1]][1]);
  43. } else {
  44. plus_note = '';
  45. }
  46. skin_set_data = skin_set_data.replace(
  47. /<sup>([^<>]+)<\/sup>/,
  48. '<sup><a id="note_' + note_list[toc_data[1]][0] + plus_note + '" href="#note_' + note_list[toc_data[1]][0] + '_end">$1</a></sup>'
  49. );
  50. i += 1;
  51. } else {
  52. break;
  53. }
  54. }
  55. document.getElementById(name_ele).innerHTML = skin_set_data;
  56. }
  57. let opennamu_do_render_simple_url = [
  58. '/manager/1',
  59. '/manager',
  60. '/other',
  61. '/setting/phrase',
  62. '/setting/main',
  63. '/setting/external',
  64. '/change/skin_set/main'
  65. ];
  66. if(opennamu_do_render_simple_url.includes(window.location.pathname)) {
  67. opennamu_do_render_simple('opennamu_simple_render');
  68. }