Widget:MgpWikiConverter
<!DOCTYPE html> <html lang="en"> <head>
<meta charset="UTF-8"> <title>Title</title>
</head> <body> <label id="jie">
<input type="text" id="horse_name" placeholder="马名" > <textarea id="moesource" style="height: 300px;width: 800px;" placeholder="请将萌百正文黏贴到这里" type="text"></textarea> <input type="button" onclick="REP()" value="转换">
</label>
</body> </html> <script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script> <script>
var a=$("#moesource"); function reverseString(str) { return str === ? : reverseString(str.substr(1)) + str.charAt(0); } function REP(){ if($("#bwiki").html()===undefined){
$("#jie").append('
' +
'<textarea id="bwiki" style="height: 300px;width: 800px;" placeholder="ces" type="text"></textarea>'); } data=a.val(); try {
data = data.replace("== 原型 ==", ); //find_name_origin const find_name_origin = new RegExp('===( |)马名考据( |)===\n(?<name_origin_content>([^=]*))(=|)', "g"); name_origin = find_name_origin.exec(data); data = data.replace(name_origin[0], ); name_origin_text = name_origin.groups.name_origin_content; insert_pos = (/。/g.exec(data).index);
data = data.substring(0, insert_pos + 1) + name_origin_text.replace('\n', ) + data.substring(insert_pos + 1);
//find_title uma_name = $("#horse_name").val(); const find_title = new RegExp("(?<title_text1>「[^']*」)|(?<title_text2>「[^']*」)"); title = find_title.exec(data); title_text = title.groups.title_text1 === undefined ? title.groups.title_text1 : title.groups.title_text1 data = data.replace(title[0], "|文案贡献者=本文引自"+uma_name+" 萌娘百科-" + uma_name + "页,文字内容默认使用《知识共享 署名-非商业性使用-相同方式共享 3.0》协议,具体贡献者请参照"+uma_name+"&action=history 历史贡献页。 \n|正文=\nh1" + uma_name + "——" + title_text);
//find_toggle_content data = data.replace(new RegExp("\{\{Toggle 内联按钮\n\\|button=点此展开/折叠\n\\|prefix=【\n\\|suffix=】\n\\|clear=false\n\\|content=", 'g').exec(data)[0], ); begin = 0; var first_left_bracket_index = /(\{\{)/g.exec(data.substring(begin)).index; var first_right_bracket_index = /}}/g.exec(data.substring(begin)).index;
counter = 0; while (counter < 100 && begin + first_left_bracket_index < begin + first_right_bracket_index) {
begin = begin + first_right_bracket_index + 2; first_left_bracket_index = /(\{\{)/g.exec(data.substring(begin)).index; first_right_bracket_index = /}}/g.exec(data.substring(begin)).index;
}
data = data.substring(0, begin + first_right_bracket_index) + data.substring(begin + first_right_bracket_index + 2) //remove_lj
const remove_lj = new RegExp("模板:Lj\\])*)}}", "g"); Array.from(remove_lj[Symbol.matchAll](data), (item) => { data = String(data.replace(item[0], item.groups.lj_str)); } ); //change_cquote const remove_cquote = new RegExp("模板:Cquote\\])*)}}", "g"); Array.from(remove_cquote[Symbol.matchAll](data), item => {
data = data.replace(item[0], "
");
}); //remove_blackstr const remove_blackstr = new RegExp("模板:黑幕\\])*)}}", "g"); Array.from(remove_blackstr[Symbol.matchAll](data), item => { data = data.replace(item[0], item.groups.black_str); }); //replace_moewiki_pic const replace_moewiki_pic = new RegExp('\\[\\[File:(?<mgp_file_hyperlink>.*)\]\]', 'g'); Array.from(replace_moewiki_pic[Symbol.matchAll](data), item => { contents = item.groups.mgp_file_hyperlink.split("|"); data = data.replace(item[0], "(图片:" + contents[0] + ")\n↑" + contents[contents.length - 1] + ""); }); //remove_moewiki_innerlink const remove_moewiki_innerlink = new RegExp("\\[\\[[^\\[]*\\|(?<name>[^\\]\\n]*)\]\]", "g"); Array.from(remove_moewiki_innerlink[Symbol.matchAll](data), item => { data = data.replace(item[0], "" + item.groups.name + ""); }); //replace_moewiki_video collection = []; const replace_moewiki_video = new RegExp('{{bilibiliVideo(?<vid_content>.*)}}', 'g');
Array.from(replace_moewiki_video[Symbol.matchAll](data), item => {
vid_title = /\\|title=(?<title>.*)/g.exec(item.groups.vid_content);
vid_p = /\\|page=(?
[0-9]*)/g.exec(item.groups.vid_content); vid_bv = /\\|id=(?<BV>[A-Za-z0-9]*)/g.exec(item.groups.vid_content).groups.BV; if (vid_title === null) { vid_title = "请补充标题"; } else { vid_title = vid_title.groups.title.substring(0,vid_title.groups.title.indexOf("|")); } replacement="(BV号:" + vid_bv + "," + vid_title; if(vid_p!==null){ replacement+=","+vid_p.groups.p; } replacement+=')' data = data.replace(item[0], replacement); }); //replace_second_title const replace_second_title = /\*[ ]*(?<sec_title>.*)/g Array.from(replace_second_title[Symbol.matchAll](data), item => { data = data.replace(item[0], 'h2' + item.groups.sec_title); }); $("#bwiki").val(data); } catch (e){ $("#bwiki").val(e); } } </script>