// Tool
function do_url_change(data) {
return encodeURIComponent(data);
}
// Main
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_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 = 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);
}