// 인터위키 // Tool function do_url_change(data) { return encodeURIComponent(data); } function do_nowiki_change(data, data_nowiki) { return data.replace(/<\/span>/, function(x, x_1) { return data_nowiki[x_1]; }); } function do_link_change(data, data_nowiki, no_change) { data = data.replace(/^:/, ''); if(no_change === 0) { data = data.replace(/^사용자:/, 'user:'); data = data.replace(/^분류:/, 'category:'); data = data.replace(/^파일:/, 'file:'); } var data_var = data.split('#'); var link_main = data.replace(/#(.*)$/, ''); var link_sub = data_var.length !== 1 ? ('#' + data_var[data_var.length - 1]) : ''; link_main = do_nowiki_change(link_main, data_nowiki); link_main = do_xss_change(link_main); return [link_main, link_sub]; } function do_darkmode_split(data) { return data.split(',')[0]; } function do_js_safe_change(data) { data = data.replace(/\\/g, '\\\\'); data = data.replace(/"/g, '\\"'); data = data.replace(/\n/g, '
'); return data; } function do_math_try_insert(name_ob, data) { return '' + 'try {\n' + 'katex.render("' + data + '", document.getElementById(\"' + name_ob + '\"));\n' + '} catch {\n' + 'document.getElementById(\"' + name_ob + '\").innerHTML = "' + data + '";\n' + '}\n' + '' } function do_data_try_insert(name_ob, data) { return '' + 'if(document.getElementById("' + name_ob + '")) {\n' + 'document.getElementById("' + name_ob + '").innerHTML = "' + data + '";\n' + '}\n' + '' } function do_px_add(data) { return data.match(/^[0-9]+$/) ? (data + 'px') : data; } function do_return_date() { var today_data = new Date(); return '' + String(today_data.getFullYear()) + '-' + ((today_data.getMonth() + 1) < 10 ? '0' : '') + String(today_data.getMonth() + 1) + '-' + (today_data.getDate() < 10 ? '0' : '') + String(today_data.getDate()) + ' ' + (today_data.getHours() < 10 ? '0' : '') + String(today_data.getHours()) + ':' + (today_data.getMinutes() < 10 ? '0' : '') + String(today_data.getMinutes()) + ':' + (today_data.getSeconds() < 10 ? '0' : '') + String(today_data.getSeconds()) + ''; } function do_xss_change(data) { data = data.replace(/</g, '<'); data = data.replace(/>/g, '>'); data = data.replace(/&/g, '&'); return data; } // Sub function do_onmark_text_render(data) { data = data.replace(/'''((?:(?!''').)+)'''/g, '$1'); data = data.replace(/''((?:(?!'').)+)''/g, '$1'); data = data.replace(/__((?:(?!__).)+)__/g, '$1'); data = data.replace(/\^\^((?:(?!\^\^).)+)\^\^/g, '$1'); data = data.replace(/,,((?:(?!,,).)+),,/g, '$1'); data = data.replace(/--((?:(?!--).)+)--/g, '$1'); data = data.replace(/~~((?:(?!~~).)+)~~/g, '$1'); return data; } function do_onmark_heading_render(data, name_doc, name_include) { var heading_re = /\n(={1,6})(#)? ?([^=#]+) ?#?={1,6}\n/; var heading_level_all = [0, 0, 0, 0, 0, 0]; var toc_data = ''; var toc_n = 0; while(1) { toc_n += 1; var heading_data = data.match(heading_re); if(!heading_data) { break; } if(toc_data === '') { toc_data += '
TOC
\n'; } var heading_level = heading_data[1].length; heading_level_all[heading_level - 1] += 1; var i = 6; while(i > heading_level - 1) { heading_level_all[i] = 0; i -= 1; } heading_level = String(heading_level); var heading_level_string = ''; i = 0; while(i < 6) { if(heading_level_all[i] !== 0) { heading_level_string += String(heading_level_all[i]) + '.'; } i += 1; } var heading_level_string_no_end = heading_level_string.replace(/\.$/, ''); toc_data += '' + '' + '' + heading_level_string + ' ' + '' + heading_data[3] + '' + '\n' + '' data = data.replace(heading_re, '\n' + (toc_n === 1 ? '' : '
') + '' + '' + heading_level_string + ' ' + heading_data[3] + ' ' + '' + (heading_data[2] ? '⊕' : '⊖') + '' + '' + '
' + '\n' ); } if(toc_data !== '') { toc_data += '
'; data += ''; } var toc_auto_add = data.match(/\[(?:목차|toc)\(no\)\]/); var toc_re = /\[(?:toc|목차)\]/g; if(toc_auto_add) { data = data.replace(/\[(?:목차|toc)\(no\)\]/g, ''); } else { if(!data.match(toc_re)) { data = data.replace(/(]+)>)/, toc_data + '$1'); } } data = data.replace(toc_re, toc_data); return data; } function do_onmark_link_render(data, data_js, name_doc, name_include, data_nowiki) { var num_link = 0; var category_data = ''; var category_re = /^(분류|category):/i; var file_re = /^(파일|file|외부|out):/i; data = data.replace(/\[\[(((?!\]\]).)+)\]\]/g, function(x, x_1) { var link_split = x_1.split('|'); var link_real = link_split[0]; var link_out = link_split[1] ? link_split[1] : link_split[0]; var link_out_2 = link_split[1] ? link_split[1] : ''; num_link += 1; var num_link_str = String(num_link - 1); if(link_real.match(file_re)) { var file_load_type = link_real.match(file_re)[1]; var file_name = link_real.replace(file_re, ''); if(file_load_type === '파일' || file_load_type === 'file') { var file_type = file_name.split('.'); file_name = file_type.slice(0, file_type.length - 1).join('.'); file_type = file_type[file_type.length - 1]; var file_src = do_url_change(file_name) + '.' + file_type; var file_alt = file_name + '.' + file_type; var file_exist = 1; } else { var file_src = file_name; var file_alt = file_name; var file_exist = 0; } var file_style = ''; var file_bgcolor = ''; var file_align = ''; var file_set = link_out_2.split('&'); var i = 0; while(file_set[i]) { var file_set_name = file_set[i].split('='); var file_set_data = file_set_name[1]; file_set_name = file_set_name[0]; if(file_set_name === 'width') { file_style += 'width:' + file_set_data + ';'; } else if(file_set_name === 'height') { file_style += 'height:' + file_set_data + ';'; } else if(file_set_name === 'bgcolor') { file_bgcolor += 'background:' + file_set_data + ';'; } else if(file_set_name === 'alt') { file_alt += file_set_data; } else if(file_set_name === 'align') { if(file_set_data === 'center') { file_align = 'display: block; text-align: center;'; } else { file_align = 'float: ' + file_set_data + ';'; } } i += 1; } return '' + '' + '' + '' + '' + '' } else if(link_real.match(category_re)) { var category_link = link_real.replace(category_re, ''); category_data = (category_data === '' ? '
Category : ' : category_data); category_data += '' + '' + category_link + ' | ' + '' return ''; } else if(link_real.match(/^http(s)?:\/\//)) { var i = 0; while(i < 2) { if(i === 0) { var var_link_type = 'href'; } else { var var_link_type = 'title'; } data_js += '' + 'document.getElementsByName("' + name_include + 'set_link_' + num_link_str + '")[0].' + var_link_type + ' = ' + '"' + do_js_safe_change(link_real) + '";' + '\n' + ''; i += 1; } return '' + link_out + ''; } else { if(link_real.match(/^\//)) { link_real = name_doc + link_real; } else if(link_real.match(/^\.\.\//)) { link_real = link_real.replace(/^\.\.\//, ''); link_real = name_doc.replace(/\/[^/]+$/, '') + (link_real !== '' ? '/' + link_real : ''); } var i = 0; while(i < 2) { if(i === 0) { var link_data_var = do_link_change(link_real, data_nowiki, 0); var link_main = link_data_var[0]; var link_sub = link_data_var[1]; var var_link_type = 'href'; if(link_main === '') { var var_link_data = link_sub; } else { var var_link_data = '/w/' + do_url_change(link_main) + link_sub; } } else { var var_link_type = 'title'; var var_link_data = do_js_safe_change(link_main) + link_sub; } data_js += '' + 'document.getElementsByName("' + name_include + 'set_link_' + num_link_str + '")[0].' + var_link_type + ' = ' + '"' + var_link_data + '";' + '\n' + ''; i += 1; } return '' + link_out + ''; } }); data += (category_data === '' ? '' : (category_data.replace(/\| $/, '') + '
')); return [data, data_js]; } function do_onmark_footnote_render(data, name_include) { var footnote_end_data = ''; var footnote_all_data = {}; var footnote_re = /(?:\[\*([^ \]]*)(?: ((?:(?!\]).)+))?\]|\[(footnote|각주)\])/; var i = 1; while(1) { var footnote_data = data.match(footnote_re); if(!footnote_data) { break; } if(!footnote_data[3]) { if(!footnote_data[2]) { var footnote_line_data = ''; } else { var footnote_line_data = footnote_data[2]; } if(!footnote_data[1]) { var footnote_name = String(i); } else { var footnote_name = footnote_data[1]; } if(!footnote_all_data[footnote_name]) { footnote_all_data[footnote_name] = footnote_line_data; } footnote_line_data = footnote_all_data[footnote_name]; footnote_end_data += '' + '
  • ' + '' + '(' + footnote_name + ')' + ' ' + footnote_line_data + '' + '
  • ' + ''; data = data.replace(footnote_re, '' + '' + '' + '(' + footnote_name + ')' + '' + '' + ''); i += 1; } else { if(footnote_end_data !== '') { footnote_end_data = ''; } data = data.replace(footnote_re, footnote_end_data); footnote_end_data = ''; } } if(footnote_end_data !== '') { data += ''; } return data; } function do_onmark_macro_render(data) { data = data.replace(/\[([^[\](]+)\(((?:(?!\)\]).)+)\)\]/g, function(x, x_1, x_2) { x_1 = x_1.toLowerCase(); if(x_1 === 'youtube' || x_1 === 'kakaotv' || x_1 === 'nicovideo') { var video_code = x_2.match(/^([^,]+)/); video_code = video_code ? video_code[1] : ''; var video_width = x_2.match(/,(?: *)width=([0-9]+)/); video_width = video_width ? (video_width[1] + 'px') : '640px'; var video_height = x_2.match(/,(?: *)height=([0-9]+)/); video_height = video_height ? (video_height[1] + 'px') : '360px'; if(x_1 === 'youtube') { var video_start = x_2.match(/,(?: *)start=([0-9]+)/); video_start = video_start ? ('?' + video_start[1]) : ''; video_code = video_code.replace(/^https:\/\/www\.youtube\.com\/watch\?v=/, ''); video_code = video_code.replace(/^https:\/\/youtu\.be\//, ''); var video_src = 'https://www.youtube.com/embed/' + video_code + video_start } else if(x_1 === 'kakaotv') { video_code = video_code.replace(/^https:\/\/tv\.kakao\.com\/channel\/9262\/cliplink\//, ''); video_code = video_code.replace(/^http:\/\/tv\.kakao\.com\/v\//, ''); var video_src = 'https://tv.kakao.com/embed/player/cliplink/' + video_code +'?service=kakao_tv' } else { var video_src = 'https://embed.nicovideo.jp/watch/' + video_code } return ''; } else if(x_1 === 'anchor') { return ''; } else if(x_1 === 'dday') { var date_old = new Date(x_2); var date_now = new Date(do_return_date()); var date_end = Math.floor((date_now - date_old) / (24 * 60 * 60 * 1000)); return date_end > 0 ? '+' + date_end : '-' + date_end; } else if(x_1 === 'age') { var date_old = new Date(x_2); var date_now = new Date(do_return_date()); var date_end = Math.floor((date_now - date_old) / (365 * 24 * 60 * 60 * 1000)); return date_end > 0 ? date_end : ''; } else if(x_1 === 'pagecount') { return '0'; } else { return '' + x_1 + '(' + x_2 + ')'; } }); data = data.replace(/\[([^[*()\]]+)\]/g, function(x, x_1) { x_1 = x_1.toLowerCase(); if(x_1 === 'date') { return do_return_date(); } else if(x_1 === 'clearfix') { return '
    '; } else if(x_1 === 'br') { return '
    '; } else if(x_1 === 'pagecount') { return '0'; } else { return '' + x_1 + ''; } }); data = data.replace(//g, '['); data = data.replace(//g, ']'); return data; } function do_onmark_middle_render(data, data_js, name_include, data_nowiki, name_doc) { var middle_re = /{{{((?:(?!{{{|}}}).)+)}}}/s; var html_n = 0; var syntax_n = 0; var nowiki_n = 0; var folding_n = 0; while(1) { if(!data.match(middle_re)) { break; } data = data.replace(middle_re, function(x, x_1) { var middle_data_before = x_1.match(/^({+)/); middle_data_before = middle_data_before ? middle_data_before[1] : ''; var middle_data_x_1 = x_1.replace(/^({+)/, ''); var middle_data = middle_data_x_1.match(/^([^ ]+) /); middle_data = middle_data ? middle_data[1] : ''; if(middle_data) { var middle_data_all = middle_data_x_1.replace(/^([^ ]+) /, ''); } console.log(middle_data); var middle_type = middle_data.match( /^(?:(?:(?:(#|@)([0-9a-f-A-F]{3}){1,2})|(#|@)([a-zA-Z]+))|(\+|-)([1-5])|#!(html|wiki|syntax|folding|html))$/i ); if(middle_type) { if(middle_data_x_1[middle_data_x_1.length - 1] === '\\') { return middle_data_before + '{{{' + middle_data_x_1 + ''; } else if(middle_type[1]) { if(middle_type[1] === '@') { return middle_data_before + '' + middle_data_all + ''; } else { return middle_data_before + '' + middle_data_all + ''; } } else if(middle_type[3]) { if(middle_type[3] === '@') { return middle_data_before + '' + middle_data_all + ''; } else { return middle_data_before + '' + middle_data_all + ''; } } else if(middle_type[5]) { if(middle_type[5] === '+') { return middle_data_before + '' + middle_data_all + ''; } else { return middle_data_before + '' + middle_data_all + ''; } } else if(middle_type[7]) { var middle_type_sub = middle_type[7].toLowerCase(); if(middle_type_sub === 'html') { html_n += 1; data_nowiki[name_include + 'nowiki_html_' + String(html_n)] = middle_data_all; data_js += do_data_try_insert( name_include + 'nowiki_html_' + String(html_n), do_js_safe_change(middle_data_all) ); return middle_data_before + ''; } else if(middle_type_sub === 'wiki') { var middle_wiki_re = /^(?:[^ ]+)(?: style=['"]([^\n'"]*)['"])?\n?/; var middle_wiki = middle_data_x_1.match(middle_wiki_re); middle_wiki = middle_wiki ? middle_wiki[1] : ''; middle_wiki = middle_wiki.replace(/display/, ''); middle_data_all = middle_data_x_1.replace(middle_wiki_re, ''); return middle_data_before + '' + '' + '\n' + middle_data_all + '\n' + '' + ''; } else if(middle_type_sub === 'folding') { folding_n += 1; var middle_folding_re = /^(?:[^ ]+)(?: ([^\n]*))?\n?/; var middle_folding = middle_data_x_1.match(middle_folding_re); middle_folding = middle_folding ? middle_folding[1] : 'open'; middle_data_all = middle_data_x_1.replace(middle_folding_re, ''); data_js += do_data_try_insert('get_' + name_include + 'folding_' + String(folding_n), do_js_safe_change(middle_folding)); return middle_data_before + '
    ' + '' + '' + '' + '' + '
    ' + '' + '' } else if(middle_type_sub === 'syntax') { syntax_n += 1; var middle_syntax = middle_data_x_1.match(/^(?:[^ ]+) ([^\n]+)\n/); middle_syntax = middle_syntax ? middle_syntax[1] : 'python'; middle_data_all = middle_data_x_1.replace(/^(?:[^ ]+) ([^\n]+)\n/, ''); data_nowiki[name_include + 'nowiki_syntax_' + String(syntax_n)] = middle_data_all; data_js += do_data_try_insert( name_include + 'nowiki_syntax_' + String(syntax_n), do_js_safe_change(middle_data_all) ); return middle_data_before + '
    ' +
                                    '' +
                                '
    ' + '' } } } // 최대한 노력해봐야함 nowiki_n += 1; data_nowiki[name_include + 'nowiki_' + String(nowiki_n)] = middle_data_x_1; data_js = do_data_try_insert( name_include + 'nowiki_' + String(nowiki_n), do_js_safe_change(middle_data_x_1) ) + data_js; return middle_data_before + ''; }); } data = data.replace(//g, '{{{'); data = data.replace(//g, '}}}'); if(syntax_n > 0) { data_js += 'hljs.initHighlightingOnLoad();\n'; } return [data, data_js, data_nowiki]; } function do_onmark_last_render(data) { // middle_render 마지막 처리 data = data.replace(//g, ''); // heading_render 마지막 처리 data = data.replace(/\n?/g, ''); data = data.replace(/\n?/g, ''); // list_render 마지막 처리 data = data.replace(/(<\/ul>)\n/g, '$1'); // br 마지막 처리 data = data.replace(/^(\n| )+/, ''); data = data.replace(/(\n| )+$/, ''); data = data.replace(/\n/g, '
    '); return data; } function do_onmark_include_render(data, data_js, name_include, data_nowiki) { var include_re = /\[include\(((?:(?!\)\]).)+)\)\]/i; var i = 0; while(1) { i += 1; var include_data = data.match(include_re); if(!include_data) { break; } var include_name = do_nowiki_change( include_data[1].match(/^([^,]+)/)[1], data_nowiki ); var include_add_re = /, *([^=]+)=((?:(?:(?!\)]|,).)+)+)/; var include_add_data = [] var include_data = include_data[1]; while(1) { var include_add = include_data.match(include_add_re); if(!include_add) { break; } include_add_data.push([ include_add[1], do_nowiki_change(include_add[2], data_nowiki) ]); include_data = include_data.replace(include_add_re, ''); } data = data.replace(include_re, '(' + include_name + ')' + '
    ' ); data_js += 'load_include("' + do_js_safe_change(include_name) + '", "' + name_include + 'include_' + String(i) + '", ' + JSON.stringify(include_add_data) + ');\n' } return [data, data_js]; } function do_onmark_nowiki_before_render(data, data_js, name_include, data_nowiki) { var num_nowiki = 0; data = data.replace(/\\(.)/g, function(x, x_1) { num_nowiki += 1; data_nowiki[name_include + 'nowiki_one_' + String(num_nowiki)] = x_1; data_js += do_data_try_insert(name_include + 'nowiki_one_' + String(num_nowiki), do_js_safe_change(x_1)); return ''; }); return [data, data_js, data_nowiki, num_nowiki]; } function do_onmark_table_render_sub(data, data_col) { var data_option_all = { "div" : "", "table" : "", "tr" : "", "td" : "", "col" : data_col, "colspan" : "", "rowspan" : "", "data" : "" }; var table_option_re = /<((?:(?!<|>).)+)>/; while(1) { var no_option = ''; var align_auto = 1; var data_option = data.match(table_option_re); if(!data_option) { break; } data_option = data_option[1]; var data_option_var = data_option.split('='); if(data_option_var.length === 2) { var table_option_name = data_option_var[0].replace(/ /g, ''); var table_option_data = data_option_var[1].replace(/"/g, ''); if(table_option_name === 'tablebgcolor') { // table data_option_all['table'] += 'background:' + do_darkmode_split(table_option_data) + ';'; } else if(table_option_name === 'tablewidth') { data_option_all['table'] += 'width:' + do_px_add(table_option_data) + ';'; } else if(table_option_name === 'tableheight') { data_option_all['table'] += 'height:' + do_px_add(table_option_data) + ';'; } else if(table_option_name === 'tablealign') { if(table_option_data === 'right') { data_option_all['div'] += 'float:right;'; } else if(table_option_data === 'center') { data_option_all['div'] += 'margin:auto;'; data_option_all['table'] += 'margin:auto;'; } } else if(table_option_name === 'tabletextalign') { data_option_all['table'] += 'text-align:' + table_option_data + ';'; } else if(table_option_name === 'tablecolor') { data_option_all['table'] += 'color:' + do_darkmode_split(table_option_data) + ';'; } else if(table_option_name === 'tablebordercolor') { data_option_all['table'] += 'border:2px solid ' + do_darkmode_split(table_option_data) + ';'; } else if(table_option_name === 'rowbgcolor') { // tr data_option_all['tr'] += 'background:' + do_darkmode_split(table_option_data) + ';'; } else if(table_option_name === 'rowtextalign') { data_option_all['tr'] += 'text-align:' + table_option_data + ';'; } else if(table_option_name === 'rowcolor') { data_option_all['tr'] += 'color:' + do_darkmode_split(table_option_data) + ';'; } else if(table_option_name === 'colcolor') { // col data_option_all['col'] += 'color:' + do_darkmode_split(table_option_data) + ';'; } else if(table_option_name === 'colbgcolor') { data_option_all['col'] += 'background:' + do_darkmode_split(table_option_data) + ';'; } else if(table_option_name === 'bgcolor') { // td data_option_all['td'] += 'background:' + do_darkmode_split(table_option_data) + ';'; } else if(table_option_name === 'color') { data_option_all['td'] += 'color:' + do_darkmode_split(table_option_data) + ';'; } else if(table_option_name === 'width') { data_option_all['td'] += 'width:' + do_px_add(table_option_data) + ';'; } else if(table_option_name === 'height') { data_option_all['td'] += 'height:' + do_px_add(table_option_data) + ';'; } else { no_option = '' + data_option + ''; } } else { if(data_option.match(/^-[0-9]+$/)) { // span data_option_all['colspan'] = data_option.replace('-', ''); } else if(data_option.match(/^(\^|v)?\|[0-9]+$/)) { if(data_option[0] === '^') { data_option_all['td'] += 'vertical-align: top;'; } else if(data_option[0] === 'v') { data_option_all['td'] += 'vertical-align: bottom;'; } data_option_all['rowspan'] = data_option.replace(/[^0-9]+/g, ''); } else if( data_option === '(' || data_option === ':' || data_option === ')' ) { // align if(data_option === '(') { data_option_all['td'] += 'text-align:right;'; } else if(data_option === ':') { data_option_all['td'] += 'text-align:center;'; } else { data_option_all['td'] += 'text-align:left;'; } align_auto = 0; } else { var table_option_data = data_option.replace(/"/g, '').match(/^((?:#[a-zA-Z0-9]{3}){1,2}|\w+)/); if(table_option_data) { data_option_all['td'] += 'background:' + table_option_data[1] + ';'; } else { no_option = '' + data_option + ''; } } } data = data.replace(table_option_re, no_option); } data = data.replace('', '<'); data = data.replace('', '>'); data_option_all['data'] = data; if(align_auto === 1) { if( data_option_all['data'][0] === ' ' || data_option_all['data'][data_option_all['data'].length - 1] === ' ' ) { data_option_all['td'] += 'text-align:center;'; } else if(data_option_all['data'][0] === ' ') { data_option_all['td'] += 'text-align:right;'; } } data_option_all['data'] = data_option_all['data'].replace(/^ +| +$/g, ''); return data_option_all; } function do_onmark_table_render_main(data) { var table_re = /\n((?:(?:\|\||\|\|\n|(?:\|\|)+(?!\n)(?:(?:(?!\|\|).)+))+)\|\|)\n/gs; data = data.replace(table_re, function(x, x_1) { var table_cel_re = /((?:\|\|)+)((?:(?!\|\|).)*)/gs; var table_data = ''; var table_data_org = x_1; var table_col = 0; var table_col_data = {}; table_data_org = table_data_org.replace(table_cel_re, function(x, x_1, x_2) { console.log([x, x_1, x_2, table_data]); if(!table_col_data[table_col]) { table_col_data[table_col] = ''; } var table_data_option = do_onmark_table_render_sub(x_2, table_col_data[table_col]); table_col_data[table_col] = table_data_option['col']; if(table_data_option['colspan'] === '') { table_data_option['colspan'] = String(x_1.length / 2); } if(table_data === '') { table_data += '' + '
    ' + '' + ''; } if(x_1 === '||' && (x_2 === '\n' || x_2 === '')) { table_data += ''; table_col = 0; } else if(x_2 === '\n' || x_2 === '') { table_data += ''; table_col = 0; } else { if(table_col === 0) { table_data += '' + '' + '' } table_data += '' + '' + ''; table_col += 1; } return ''; }); if(table_col === 0) { table_data += '
    ' + table_data_option['data'] + '
    '; } else { table_data += ''; } return '\n' + table_data + '\n'; }); return data; } function do_onmark_table_render(data) { data = data.replace(/ +\|\|/g, '||'); var wiki_re = /]+)>((?:(?!).)+)/s; while(1) { if(!data.match(wiki_re)) { break; } data = data.replace(wiki_re, function(x, x_1, x_2) { return '' + do_onmark_table_render_main(x_2) + ''; }); } console.log(data); data = do_onmark_table_render_main(data); return data; } function do_onmark_list_quote_render(data) { data = data.replace(/(\n(?:>(?:[^\n]+)\n)+)/g, function(x, x_1) { return '\n
    ' + do_onmark_list_quote_render(x_1.replace(/\n> */g, '\n')).replace(/^\n/, '') + '
    \n'; }); return data; } function do_onmark_list_render(data) { var wiki_re = /]+)>((?:(?!).)+)/s; while(1) { if(!data.match(wiki_re)) { break; } data = data.replace(wiki_re, function(x, x_1, x_2) { return '' + x_2.replace(/\n/g, '') + ''; }); } data = data.replace(/(\n(?:>(?:[^\n]+)\n)+)/g, function(x, x_1) { return '\n
    ' + do_onmark_list_quote_render(x_1.replace(/\n> */g, '\n')).replace(/^\n/, '') + '
    \n'; }); var list_re = /\n((?:(?:(?: )+)\* ?(?:(?:(?!\n).)+)\n)+)/; var list_short_re = /((?: )+)\* ?((?:(?!\n).)+)\n/g; while(1) { var list_data = data.match(list_re); if(!list_data) { break; } var list_end_data = '
      ' + list_data[1].replace(list_short_re, function(x, x_1, x_2) { return '
    • ' + x_2 + '
    • '; }) + '
    '; data = data.replace(list_re, '\n' + list_end_data + '\n'); } var wiki_re = /]+)>((?:(?!).)+)/s; while(1) { if(!data.match(wiki_re)) { break; } data = data.replace(wiki_re, function(x, x_1, x_2) { return '' + x_2.replace(//g, '\n') + ''; }); } return data; } function do_onmark_math_render(data, data_js, name_include) { data = data.replace(/((?:(?!<\/math>).)+)<\/math>/g, '[math($1)]'); var i = 0; data = data.replace(/\[math\((((?!\)]).)+)\)]/g, function(x, x_1) { i += 1; data_js += do_math_try_insert(name_include + 'math_' + String(i), do_js_safe_change(do_xss_change(x_1))); return ''; }); return [data, data_js]; } function do_onmark_hr_render(data) { var hr_re = /\n-{4,9}\n/; while(1) { if(!data.match(hr_re)) { break; } data = data.replace(hr_re, '\n
    \n'); } return data; } function do_onmark_redirect_render(data, data_js, name_doc) { var redirect_re = /^\n#(?:redirect|넘겨주기) ([^\n]+)/; var data_redirect = data.match(redirect_re); if(data_redirect) { var link_data_var = do_link_change(data_redirect[1], {}, 1); var link_main = link_data_var[0]; var link_sub = link_data_var[1]; if( window.location.search === '' && window.location.pathname.match(/^\/w\//) ) { window.location.href = '/w/' + do_url_change(link_main) + '?from=' + do_url_change(name_doc) + link_sub; } return [ data.replace(redirect_re, '/w/' + do_url_change(link_main) + '?from=' + do_url_change(name_doc) + link_sub), data_js, 1 ]; } else { return [data, data_js, 0]; } } // Main function do_onmark_render(test_mode = 'test', name_id = '', name_include = '', name_doc = '', doc_data = '') { if(test_mode === 'normal') { var data = '\n' + document.getElementById(name_id).innerHTML.replace(/\r/g, '') + '\n'; } else if(test_mode === 'manual') { var data = '\n' + doc_data.replace(/\r/g, '') + '\n'; } else { var data = '\n' + ( `` ).replace(/\r/g, '') + '\n'; } var data_js = ''; var data_backlink = []; var data_nowiki = {}; var data_var = do_onmark_redirect_render(data, data_js, name_doc); data = data_var[0]; data_js = data_var[1]; var passing = data_var[2]; if(passing === 0) { var data_var = do_onmark_math_render(data, data_js, name_include); data = data_var[0]; data_js = data_var[1]; console.log('math'); data_var = do_onmark_include_render(data, data_js, name_include, data_nowiki); data = data_var[0]; data_js = data_var[1]; console.log('include'); data_var = do_onmark_middle_render(data, data_js, name_include, data_nowiki, name_doc); data = data_var[0]; data_js = data_var[1]; data_nowiki = data_var[2]; console.log('middle'); data_var = do_onmark_nowiki_before_render(data, data_js, name_include, data_nowiki); data = data_var[0]; data_js = data_var[1]; data_nowiki = data_var[2]; console.log('nowiki'); data = do_onmark_text_render(data); console.log('text'); data = do_onmark_heading_render(data, name_doc, name_include); console.log('heading'); data = do_onmark_table_render(data); console.log('table'); data_var = do_onmark_link_render(data, data_js, name_doc, name_include, data_nowiki); data = data_var[0]; data_js = data_var[1]; console.log('link'); data = do_onmark_macro_render(data); console.log('macro'); data = do_onmark_list_render(data); console.log('list'); data = do_onmark_hr_render(data); console.log('hr'); data = do_onmark_footnote_render(data, name_include); console.log('footnote'); data = do_onmark_last_render(data, name_include); console.log('all') } data_js += '' + 'get_link_state("' + name_include + '");\n' + 'get_file_state("' + name_include + '");\n' + '' data_js += 'render_html("' + name_include + 'nowiki_html");\n' if(test_mode === 'normal') { document.getElementById(name_id).innerHTML = data + ''; eval(data_js); } else if(test_mode === 'manual') { return [data, data_js]; } else { console.log([data, data_js]); } }