function render_namumark(target) {
function get_today() {
var today_data = new Date();
return '' +
String(today_data.getFullYear()) + '-' +
String(today_data.getMonth() + 1) + '-' +
String(today_data.getDate()) + ' ' +
(today_data.getHours() < 10 ? '0' + String(today_data.getHours()) : String(today_data.getHours())) + ':' +
(today_data.getMinutes() < 10 ? '0' + String(today_data.getMinutes()) : String(today_data.getMinutes())) + ':' +
(today_data.getSeconds() < 10 ? '0' + String(today_data.getSeconds()) : String(today_data.getSeconds())) +
'';
}
function get_link_state(link_data) {
var xhr = new XMLHttpRequest();
xhr.open("GET", "/api/w/" + encodeURIComponent(link_data[0]) + "?exist=1", true);
xhr.send(null);
xhr.onreadystatechange = function() {
var i = 0;
while(1) {
if(document.getElementsByClassName(link_data[1])[i]) {
if(this.readyState === 4 && this.status === 200) {
if(JSON.parse(this.responseText)['exist'] !== '1') {
document.getElementsByClassName(link_data[1])[i].id = "not_thing";
} else {
document.getElementsByClassName(link_data[1])[i].id = "";
}
} else {
document.getElementsByClassName(link_data[1])[i].id = "not_thing";
}
i += 1;
} else {
break;
}
}
}
}
function get_file_state(file_data) {
var file_part = file_data[0].match(/^([^.]+)\.(.+)$/);
if(file_part) {
var file_name = file_part[1];
var file_type = '.' + file_part[2];
} else {
var file_name = file_data;
var file_type = '';
}
var xhr = new XMLHttpRequest();
xhr.open("GET", "/api/sha224/" + encodeURIComponent(file_name), true);
xhr.send(null);
xhr.onreadystatechange = function() {
if(this.readyState === 4 && this.status === 200) {
var xhr = new XMLHttpRequest();
xhr.open("GET", "/api/w/file:" + encodeURIComponent(file_data[0]) + "?exist=1", true);
xhr.send(null);
var img_src = JSON.parse(this.responseText)['data'];
xhr.onreadystatechange = function() {
if(this.readyState === 4 && this.status === 200) {
if(JSON.parse(this.responseText)['exist'] !== '1') {
document.getElementById(file_data[1]).innerHTML = '' +
'' + file_data[0] + '' +
'';
} else {
document.getElementById(file_data[1]).innerHTML = '' +
'' +
'';
}
} else {
document.getElementById(file_data[1]).innerHTML = '' +
'' + file_data[0] + '' +
'';
}
}
}
}
}
function divi_link(link_data) {
var link_part = link_data.match(/^([^|]+)\|(.+)$/);
if(link_part) {
return [link_part[2], link_part[1]]
} else {
return [link_data, link_data]
}
}
function table_analysis(main_data, cel_data, start_cel, num = 0) {
var table_class = 'class="'
var div_style = 'style="'
var table_style = 'style="'
var cel_style = 'style="'
var row_style = 'style="'
var row = ''
var cel = ''
var table_state_get = main_data.match(/<table ?width=((?:(?!>).)*)>/);
if(table_state_get) {
if(main_data.match('^[0-9]+$', table_state_get[1])) {
div_style += 'width: ' + table_state_get[1] + 'px;';
} else {
div_style += 'width: ' + table_state_get[1] + ';';
}
table_style += 'width: 100%;';
}
table_state_get = main_data.match(/<table ?height=((?:(?!>).)*)>/);
if(table_state_get) {
if(main_data.match(/^[0-9]+$/, table_state_get[1])) {
table_style += 'height: ' + table_state_get[1] + 'px;';
} else {
table_style += 'height: ' + table_state_get[1] + ';';
}
}
table_state_get = main_data.match(/<table ?align=((?:(?!>).)*)>/);
if(table_state_get) {
if(table_state_get[1] == 'right') {
div_style += 'float: right;';
} else if(table_state_get[1] == 'center') {
table_style += 'margin: auto;';
}
}
table_state_get = main_data.match(/<table ?textalign=((?:(?!>).)*)>/);
if(table_state_get) {
num = 1
if(table_state_get[1] == 'right') {
table_style += 'text-align: right;';
} else if(table_state_get[1] == 'center') {
table_style += 'text-align: center;';
}
}
table_state_get = main_data.match(/<row ?textalign=((?:(?!>).)*)>/);
if(table_state_get) {
if(table_state_get[1] == 'right') {
row_style += 'text-align: right;';
} else if(table_state_get[1] == 'center') {
row_style += 'text-align: center;';
} else {
row_style += 'text-align: left;';
}
}
table_state_get = main_data.match(/<-((?:(?!>).)*)>/);
if(table_state_get) {
cel = 'colspan="' + table_state_get[1] + '"';
} else {
cel = 'colspan="' + String(Math.round(start_cel.length / 2)) + '"';
}
table_state_get = main_data.match(/<\|((?:(?!>).)*)>/);
if(table_state_get) {
row = 'rowspan="' + table_state_get[1] + '"';
}
table_state_get = main_data.match(/<rowbgcolor=(#(?:[0-9a-f-A-F]{3}){1,2}|\w+)(?:,(#(?:[0-9a-f-A-F]{3}){1,2}|\w+))?>/);
if(table_state_get) {
row_style += 'background: ' + table_state_get[1] + ';';
}
table_state_get = main_data.match(/<rowcolor=(#(?:[0-9a-f-A-F]{3}){1,2}|\w+)(?:,(#(?:[0-9a-f-A-F]{3}){1,2}|\w+))?>/);
if(table_state_get) {
row_style += 'color: ' + table_state_get[1] + ';';
}
table_state_get = main_data.match(/<table ?bordercolor=(#(?:[0-9a-f-A-F]{3}){1,2}|\w+)(?:,(#(?:[0-9a-f-A-F]{3}){1,2}|\w+))?>/);
if(table_state_get) {
table_style += 'border: ' + table_state_get[1] + ' 2px solid;';
}
table_state_get = main_data.match(/<table ?bgcolor=(#(?:[0-9a-f-A-F]{3}){1,2}|\w+)(?:,(#(?:[0-9a-f-A-F]{3}){1,2}|\w+))?>/);
if(table_state_get) {
table_style += 'background: ' + table_state_get[1] + ';';
}
table_state_get = main_data.match(/<table ?color=(#(?:[0-9a-f-A-F]{3}){1,2}|\w+)(?:,(#(?:[0-9a-f-A-F]{3}){1,2}|\w+))?>/);
if(table_state_get) {
table_style += 'color: ' + table_state_get[1] + ';';
}
table_state_get = main_data.match(/<(?:bgcolor=)?(#(?:[0-9a-f-A-F]{3}){1,2}|\w+)(?:,(#(?:[0-9a-f-A-F]{3}){1,2}|\w+))?>/);
if(table_state_get) {
cel_style += 'background: ' + table_state_get[1] + ';';
}
table_state_get = main_data.match(/<color=(#(?:[0-9a-f-A-F]{3}){1,2}|\w+)(?:,(#(?:[0-9a-f-A-F]{3}){1,2}|\w+))?>/);
if(table_state_get) {
cel_style += 'color: ' + table_state_get[1] + ';';
}
table_state_get = main_data.match(/<width=((?:(?!>).)*)>/);
if(table_state_get) {
if(table_state_get[1].match(/^[0-9]+$/)) {
cel_style += 'width: ' + table_state_get[1] + 'px;';
} else {
cel_style += 'width: ' + table_state_get[1] + ';';
}
}
table_state_get = main_data.match(/<height=((?:(?!>).)*)>/);
if(table_state_get) {
if(table_state_get[1].match(/^[0-9]+$/)) {
cel_style += 'height: ' + table_state_get[1] + 'px;';
} else {
cel_style += 'height: ' + table_state_get[1] + ';';
}
}
var text_right = main_data.match(/<\)>/);
var text_center = main_data.match(/<:>/);
var text_left = main_data.match(/<\(>/);
if(text_right) {
cel_style += 'text-align: right;';
} else if(text_center) {
cel_style += 'text-align: center;';
} else if(text_left) {
cel_style += 'text-align: left;';
} else if(num == 0) {
if(cel_data.match(/^ /) && cel_data.match(/ $/)) {
cel_style += 'text-align: center;';
} else if(cel_data.match(/^ /)) {
cel_style += 'text-align: right;';
} else if(cel_data.match(/ $/)) {
cel_style += 'text-align: left;';
}
}
table_state_get = main_data.match(/<table ?class=((?:(?!>).)+)>/);
if(table_state_get) {
table_class += table_state_get[1];
}
div_style += '"';
table_style += '"';
cel_style += '"';
row_style += '"';
table_class += '"';
return [table_style, row_style, cel_style, row, cel, table_class, num, div_style]
}
function table_render(data) {
var table_num = 0;
while(1) {
var table_data = data.match(/\n((?:(?:(?:(?:\|\|)+(?:(?:(?!\|\|).(?:\n)*)*))+)\|\|(?:\n)?)+)/);
if(table_data) {
table_data = table_data[1];
var get_table_data = table_data.match(/^((?:\|\|)+)((?:<(?:(?:(?!>).)+)>)*)\n*((?:(?!\|\|).\n*)*)/);
if(get_table_data) {
table_return_data = table_analysis(get_table_data[2], get_table_data[3], get_table_data[1]);
table_num = table_return_data[6];
table_data = table_data.replace(
/^((?:\|\|)+)((?:<(?:(?:(?!>).)+)>)*)\n*/,
'\n' +
'
| ' ); } table_data = table_data.replace(/\|\|\n?$/, ' |
';
} else if(in_data.match(/#!folding/i)) {
mid_list.push('div_2');
return '';
} else if(in_data.match(/#!html/i)) {
mid_list.push('span');
html_number += 1;
return '';
} else {
mid_list.push('code');
mid_stack += 1;
return '' + in_data;
}
} else {
mid_list.push('code');
mid_stack += 1;
return '' + in_data;
}
}
}
});
data = data.replace(/<\/div> *\n/ig, '');
data = data.replace(/((?:(?!\n).)+) *\n/ig, function(all, in_data) {
return in_data + ' [+]';
});
data = data.replace(/((?:(?!\n).)+) *\n/ig, function(all, in_data) {
return '';
});
console.log(data);
console.log('----')
data = data.replace(/(?:style=([^\n]+) *)?\n/ig, function(all, in_data) {
if(in_data) {
return '';
} else {
return '';
}
});
var nowiki_num = 0;
var nowiki_list = {};
data = data.replace(/(\n*((?:(?!<\/code>).)+\n*)+)<\/code>/g, function(all, in_data) {
nowiki_num += 1;
nowiki_list['nowiki_' + String(nowiki_num)] = in_data;
return '';
});
data = data.replace(/\r\n/g, '\n');
data = data.replace(/&/g, '&');
data = data.replace(/\n(?: +)\|\|/g, '\n||');
data = data.replace(/\|\|(?: +)\n/g, '||\n');
data = data.replace(/\n##(?:(?:(?!\n).)+)/g, '');
data = data.replace(/\n/g, '');
data = data.replace(/ +/g, '');
console.log(data);
console.log('----')
while(1) {
wiki_table_data = data.match(/).)+)>((?:(?!).\n*)+)<\/div_1>/i);
if(wiki_table_data) {
if(wiki_table_data[2].match(/\|\|/)) {
console.log('1')
console.log(wiki_table_data[2]);
var end_table_render = table_render('\n' + wiki_table_data[2] + '\n').replace(/^\n/, '').replace(/\n$/, '');
} else {
var end_table_render = wiki_table_data[2];
}
data = data.replace(
/).)+)>((?:(?!).\n*)+)<\/div_1>/i,
'' + end_table_render + ''
);
} else {
break;
}
}
data = data.replace(/<\/td>/g, '');
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');
var toc_array = [0, 0, 0, 0, 0, 0];
var before_data = 0;
var edit_number = 0;
var toc_data = 'TOC\n\n'
data = data.replace(/\n(={1,6}) ?([^\n]+) (?:={1,6})/g, function(all, num, in_data) {
num = num.length;
edit_number += 1;
if(before_data > num) {
var i = num;
while(1) {
if(i == 6) {
break;
}
toc_array[i] = 0;
i += 1;
}
}
before_data = num;
toc_array[num - 1] += 1;
num = String(num);
var toc_num = (toc_array.join('.') + '.').replace(/0\./g, '');
if(!toc_num.match(/\./)) {
toc_num += '0.';
}
toc_data += '' +
'' +
'' + toc_num + ' ' + in_data +
'' +
'\n' +
'';
return '' +
'\n' +
'' +
'' + toc_num + ' ' + in_data +
'' +
'(Edit)' +
'' +
' ' +
'';
});
toc_data += '';
data = data.replace(/<\/h([0-9])>\n/g, '');
while(1) {
if(data.match(/(\n(?:> ?(?:[^\n]+)?\n?)+)/)) {
data = data.replace(/(\n(?:> ?(?:[^\n]+)?\n?)+)/, function(all, in_data) {
var new_in_data = in_data;
new_in_data = new_in_data.replace(/^\n> ?/, '');
new_in_data = new_in_data.replace(/\n> ?/g, '\n');
new_in_data = new_in_data.replace(/\n$/, '');
return '\n' + new_in_data + '
\n';
});
} else {
break;
}
}
while(1) {
if(data.match(/\n-{4,9}\n/)) {
data = data.replace(/\n-{4,9}\n/, function() {
return '\n
\n';
});
} else {
break;
}
}
data = data.replace(/(\n +\* ?(?:(?:(?!\|\|).)+))\|\|/g, '$1\n ||');
data = data.replace(/\n( {1,})\* ([^\n]+)/g, function(all, margin_data, in_data) {
return '' + in_data + ' '
});
data = data.replace(/\|\|'
});
console.log(data);
data = table_render(data);
var link_list = [];
var file_list = [];
var link_num = 0;
var file_num = 0;
var category = ''
while(1) {
if(data.match(/\[\[((?:(?!\[\[|]]).)+)]]/)) {
data = data.replace(/\[\[((?:(?!\[\[|]]).)+)]]/, function(all, in_data) {
if(in_data.match(/^(?:category|분류):/i)) {
var back_data = in_data.replace(/^(?:category|분류):/i, '');
var front_data = back_data;
back_data = 'category:' + back_data.replace(/#blur$/, '');
if(front_data.match(/#blur$/)) {
front_data = '#blur';
}
link_list.push([back_data, 'link_' + String(link_num)]);
link_num += 1;
if(category === '') {
category += '
Category : '
}
category += '' + front_data + ' | ';
return '';
} else if(in_data.match(/^(?:file|파일):/i)) {
file_list.push([in_data.replace(/^(?:file|파일):/i, ''), 'file_' + String(file_num)]);
file_num += 1;
return '';
} else if(in_data.match(/^http(?:s)?:\/\//i)) {
var link_part = divi_link(in_data);
var front_data = link_part[0];
var back_data = link_part[1];
return '' + front_data + '';
} else {
var link_part = divi_link(in_data);
var front_data = link_part[0];
var back_data = link_part[1];
link_list.push([back_data, 'link_' + String(link_num)]);
link_num += 1;
return '' + front_data + '';
}
});
} else {
break;
}
}
if(category !== '') {
category = category.replace(/ \| $/, '') + ''
}
data = data.replace(/\[([^(\]]+)\(((?:(?!\)]).)+)\)]/g, function(all, name, in_data) {
if(name.match(/^youtube|kakaotv|nicovideo$/i)) {
var video_code = in_data.match(/^([^,]+)/);
if(video_code) {
video_code = video_code[1];
} else {
video_code = 'test';
}
if(name === 'youtube') {
var video_src = 'https://www.youtube.com/embed/' + video_code
} else if(name === 'kakaotv') {
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
}
var width_data = in_data.match(/, *width=([^,]+)/);
if(width_data) {
width_data = width_data[1];
} else {
width_data = '560';
}
var height_data = in_data.match(/, *height=([^,]+)/);
if(height_data) {
height_data = height_data[1];
} else {
height_data = '315';
}
return '' +
'' +
'';
} else if(name.match(/^ruby$/i)) {
var main_text = in_data.match(/^([^,]+)/);
if(main_text) {
main_text = main_text[1];
} else {
main_text = 'test';
}
var ruby_text = in_data.match(/, *ruby=([^,]+)/);
if(ruby_text) {
ruby_text = ruby_text[1];
} else {
ruby_text = 'test';
}
var color_text = in_data.match(/, *color=([^,]+)/);
if(color_text) {
color_text = 'color:' + color_text[1];
} else {
color_text = '';
}
return '' +
'' +
main_text +
'' +
'' +
'' +
'' +
'';
} else if(name.match(/^anchor$/i)) {
return '';
} else {
return all;
}
});
data = data.replace(/\[([^\]]+)\]/g, function(all, name) {
if(name.match(/^br$/i)) {
return '\n'
} else if(name.match(/^목차|tableofcontents$/i)) {
return toc_data;
} else if(name.match(/^date|datetime$/i)) {
return get_today();
} else {
return all;
}
});
var ref_num = 0;
var ref_data = '
';
var name_ref_data = {};
while(1) {
if(data.match(/(?:\[\*([^ \]]*)(?: ((?:(?!\[\*|\]).)+))?\]|\[(?:각주|footnote)])/)) {
data = data.replace(/(?:\[\*([^ \]]*)(?: ((?:(?!\[\*|\]).)+))?\]|\[(?:각주|footnote)])/, function(all, name_data, in_data) {
if(all.match(/^\[(?:각주|footnote)]$/i)) {
var new_ref_data = ref_data;
ref_data = '
';
return new_ref_data + '
';
} else {
ref_num += 1;
if(name_data) {
if(in_data) {
name_ref_data[name_data] = in_data;
ref_data += '' +
'- ' +
'(' + name_data + ') ' + in_data + ''
'
' +
''
} else {
ref_data += '' +
'- ' +
'(' + name_data + ')' +
'
' +
''
}
} else {
ref_data += '' +
'- ' +
'(' + String(ref_num) + ') ' + in_data + ''
'
' +
''
}
if(name_data) {
return '' +
'' +
'' +
'(' + name_data + ')' +
'' +
'' +
'';
} else {
return '' +
'' +
'' +
'(' + String(ref_num) + ')' +
'' +
'' +
'';
}
}
});
} else {
break;
}
}
if(ref_data !== '
') {
data += ref_data + '
';
}
var i = 1;
while(1) {
if(nowiki_list['nowiki_' + String(i)]) {
data = data.replace('', '' + nowiki_list['nowiki_' + String(i)] + '');
i += 1;
} else {
break;
}
}
data = data.replace(/<\/td_1>/g, '