// Tool function do_url_change(data) { return encodeURIComponent(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()) + ''; } // 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) { var heading_re = /
(={1,6}) ?([^=]+) ?={1,6}
/; var heading_level_all = [0, 0, 0, 0, 0, 0]; var toc_data = '
TOC

'; while(1) { var heading_data = data.match(heading_re); if(!heading_data) { break; } 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[2] + '' + '
' + '' data = data.replace(heading_re, '' + '' + heading_level_string + ' ' + heading_data[2] + '' + '
' ); } data = data.replace(/(<\/h[0-9]>)
/g, '$1'); data = data.replace(/\[(?:toc|목차)\]/g, toc_data + '
'); return data; } function do_onmark_link_render(data, data_js, name_doc, name_include) { var link_num = 0; 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]; link_num += 1; var link_num_str = String(link_num - 1); 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_' + link_num_str + '")[0].' + var_link_type + ' = ' + '"' + link_real.replace(/"/g, '\\"') + '";' + '\n' + ''; i += 1; } return '' + link_out + ''; } else { var i = 0; while(i < 2) { if(i === 0) { var var_link_type = 'href'; var var_link_data = '/w/' + do_url_change(link_real); } else { var var_link_type = 'title'; var var_link_data = link_real.replace(/"/g, '\\"'); } data_js += '' + 'document.getElementsByName("' + name_include + 'set_link_' + link_num_str + '")[0].' + var_link_type + ' = ' + '"' + var_link_data + '";' + '\n' + ''; i += 1; } return '' + link_out + ''; } }); return [data, data_js]; } function do_onmark_footnote_render(data, name_include) { var footnote_end_data = ''; var footnote_all_data = {}; var footnote_re = /(?:\[\*([^ \]]*)(?: ((?:(?!\n|\]).)+))?\]|\[(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 !== '') { data = data.replace(footnote_re, ''); } 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(); console.log(x_1); 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 { 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 { return '' + x_1 + ''; } }); data = data.replace(//g, '['); data = data.replace(//g, ']'); return data; } // Main function do_onmark_render(name_id, name_include = '', name_doc = '') { var data = document.getElementById(name_id).innerHTML; var data_js = ''; data = '
    ' + data.replace(/\n/g, '
    ') + '
    '; data = do_onmark_text_render(data); data = do_onmark_heading_render(data); var var_data = do_onmark_link_render(data, data_js, name_doc, name_include); data = var_data[0]; data_js = var_data[1]; data = do_onmark_macro_render(data); data = do_onmark_footnote_render(data, name_include); data = data.replace(/^(
    | )+/, ''); data = data.replace(/(
    | )+$/, ''); data_js += '' + 'get_link_state("' + name_include + '");\n' + 'get_file_state("' + name_include + '");\n' + '' data_js = 'render_html("' + name_include + 'render_contect");\n' + data_js document.getElementById(name_id).innerHTML = data; eval(data_js); }