load_onmark_render.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. // Tool
  2. function do_url_change(data) {
  3. return encodeURIComponent(data);
  4. }
  5. // Main
  6. function do_onmark_text_render(data) {
  7. data = data.replace(/'''((?:(?!''').)+)'''/g, '<b>$1</b>');
  8. data = data.replace(/''((?:(?!'').)+)''/g, '<i>$1</i>');
  9. data = data.replace(/__((?:(?!__).)+)__/g, '<u>$1</u>');
  10. data = data.replace(/\^\^((?:(?!\^\^).)+)\^\^/g, '<sup>$1</sup>');
  11. data = data.replace(/,,((?:(?!,,).)+),,/g, '<sub>$1</sub>');
  12. data = data.replace(/--((?:(?!--).)+)--/g, '<s>$1</s>');
  13. data = data.replace(/~~((?:(?!~~).)+)~~/g, '<s>$1</s>');
  14. return data;
  15. }
  16. function do_onmark_heading_render(data) {
  17. var heading_re = /<br>(={1,6}) ?([^=]+) ?={1,6}<br>/;
  18. var heading_level_all = [0, 0, 0, 0, 0, 0];
  19. var toc_data = '<div id="toc"><div id="toc_title">TOC</div><br>';
  20. while(1) {
  21. var heading_data = data.match(heading_re);
  22. if(!heading_data) {
  23. break;
  24. }
  25. var heading_level = heading_data[1].length;
  26. heading_level_all[heading_level - 1] += 1;
  27. var i = 6;
  28. while(i > heading_level - 1) {
  29. heading_level_all[i] = 0;
  30. i -= 1;
  31. }
  32. heading_level = String(heading_level);
  33. var heading_level_string = '';
  34. i = 0;
  35. while(i < 6) {
  36. if(heading_level_all[i] !== 0) {
  37. heading_level_string += String(heading_level_all[i]) + '.';
  38. }
  39. i += 1;
  40. }
  41. var heading_level_string_no_end = heading_level_string.replace(/\.$/, '');
  42. toc_data += '' +
  43. '<span style="margin-left: ' + String((heading_level_string.match(/\./g).length - 1) * 10) + 'px;">' +
  44. '<a href="#s-' + heading_level_string_no_end + '">' +
  45. heading_level_string + ' ' +
  46. '</a>' + heading_data[2] +
  47. '</span>' +
  48. '<br>' +
  49. ''
  50. data = data.replace(heading_re,
  51. '<h' + heading_level + ' id="s-' + heading_level_string_no_end + '">' +
  52. '<a href="#toc">' + heading_level_string + '</a> ' + heading_data[2] +
  53. '</h' + heading_level + '>' +
  54. '<br>'
  55. );
  56. }
  57. data = data.replace(/(<\/h[0-9]>)<br>/g, '$1');
  58. data = data.replace(/\[(?:toc|목차)\]/g, toc_data + '</div>');
  59. return data;
  60. }
  61. function do_onmark_link_render(data, data_js, name_doc, name_include) {
  62. var link_num = 0;
  63. data = data.replace(/\[\[(((?!\]\]).)+)\]\]/g, function(x, x_1) {
  64. var link_split = x_1.split('|');
  65. var link_real = link_split[0];
  66. var link_out = link_split[1] ? link_split[1] : link_split[0];
  67. link_num += 1;
  68. var link_num_str = String(link_num - 1);
  69. if(link_real.match(/^http(s)?:\/\//)) {
  70. var i = 0;
  71. while(i < 2) {
  72. if(i === 0) {
  73. var var_link_type = 'href';
  74. } else {
  75. var var_link_type = 'title';
  76. }
  77. data_js += '' +
  78. 'document.getElementsByName("' + name_include + 'set_link_' + link_num_str + '")[0].' + var_link_type + ' = ' +
  79. '"' + link_real.replace(/"/g, '\\"') + '";' +
  80. '\n' +
  81. '';
  82. i += 1;
  83. }
  84. return '<a id="out_link" ' +
  85. 'name="' + name_include + 'set_link_' + link_num_str + '" ' +
  86. 'title=""' +
  87. 'href="">' + link_out + '</a>';
  88. } else {
  89. var i = 0;
  90. while(i < 2) {
  91. if(i === 0) {
  92. var var_link_type = 'href';
  93. var var_link_data = '/w/' + do_url_change(link_real);
  94. } else {
  95. var var_link_type = 'title';
  96. var var_link_data = link_real.replace(/"/g, '\\"');
  97. }
  98. data_js += '' +
  99. 'document.getElementsByName("' + name_include + 'set_link_' + link_num_str + '")[0].' + var_link_type + ' = ' +
  100. '"' + var_link_data + '";' +
  101. '\n' +
  102. '';
  103. i += 1;
  104. }
  105. return '<a class="' + name_include + 'link_finder" ' +
  106. 'name="' + name_include + 'set_link_' + link_num_str + '" ' +
  107. 'title="" ' +
  108. 'href="">' + link_out + '</a>';
  109. }
  110. });
  111. return [data, data_js];
  112. }
  113. function do_onmark_render(name_id, name_include = '', name_doc = '') {
  114. var data = document.getElementById(name_id).innerHTML;
  115. var data_js = '';
  116. data = '<br>' + data.replace(/\n/g, '<br>') + '<br>';
  117. data = do_onmark_text_render(data);
  118. data = do_onmark_heading_render(data);
  119. var var_data = do_onmark_link_render(data, data_js, name_doc, name_include);
  120. data = var_data[0];
  121. data_js = var_data[1];
  122. data = data.replace(/^(<br>| )+/, '');
  123. data = data.replace(/(<br>| )+$/, '');
  124. data_js += '' +
  125. 'get_link_state("' + name_include + '");\n' +
  126. 'get_file_state("' + name_include + '");\n' +
  127. ''
  128. data_js = 'render_html("' + name_include + 'render_contect");\n' + data_js
  129. document.getElementById(name_id).innerHTML = data;
  130. eval(data_js);
  131. }