사용자:다메즈마/nmtbtomwtb.js

참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다.

  • 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R을 입력 (Mac에서는 ⌘-R)
  • 구글 크롬: Ctrl-Shift-R키를 입력 (Mac에서는 ⌘-Shift-R)
  • 인터넷 익스플로러 / 엣지: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.
  • 오페라: Ctrl-F5를 입력.
//라이센스 GPLv2입니다.
function ConvertToMediaWikiTable(str){
	var res = "";var tablemark = "";var markStartIdx = 0;
	while(-1 != (markStartIdx = str.indexOf("\n||"))){
		res = res.concat(str.substring(0,markStartIdx));
		str = str.substring(markStartIdx,str.length);
		tablemark = "";
		var tablestyle=[];
		while(1){
			var newLineIdx = str.indexOf("\n")+1;
			if(str.substr(newLineIdx,2) != "||") break;
			str = str.substring(newLineIdx,str.length);
			var lineEndIdx = str.indexOf("\n");
			if(lineEndIdx==-1)lineEndIdx = str.length;
			var line = str.substring(0,lineEndIdx).split("||");
			str = str.substring(lineEndIdx,str.length);
			line.splice(0,1);
			line.splice(line.length-1,1);
			var colspan = 0;
			for(var i=0; i < line.length ; i++){
				var c=line[i];
				line[i] = "";
				if(c.length==0)colspan++;
				else{
				var b=0;
				
				var style = [];
				while(true){
					var a=0;
					if((a=c.indexOf("<"))==-1)break;
					var e=c.indexOf(">");if(e==-1)break;
					var a=c.substring(a+1,e++).trim();c=c.substring(e,c.length);
					var v = a.substring(1,a.length);
 
					if(a[0]=="-")colspan = v-1;
					else if(a[0]=="|"){tablemark+="rowspan=\""+v+"\" ";b=1;}
					else if(a[0]=="(")style.push("text-align:left");
					else if(a[0]==")")style.push("text-align:right");
					else if(a[0]==":")style.push("text-align:center");
					else if(a.startsWith("width"))style.push("width:" + a.substring(a.indexOf("=")+1,a.length));
					else if(a.startsWith("height"))style.push("height:" + a.substring(a.indexOf("=")+1,a.length));
					else if(a.startsWith("bgcolor"))style.push("background-color:" + a.substring(a.indexOf("=")+1,a.length));
					else if(a.startsWith("#"))style.push("background-color:"+a);
					else if(a.startsWith("table")){
						var a=a.substring(6,a.length);
						v=a.substring(a.indexOf("=")+1,a.length);
						if(a.startsWith("bgcolor"))tablestyle.push("background-color:"+v);
						else if(a.startsWith("align"))tablestyle.push("float:"+v);
						else if(a.startsWith("width"))tablestyle.push("width:"+v);
					}
				}
				
				if(c.trim().length == 0){
					colspan++;
					continue;
				}
				tablemark = tablemark + "\n|";
				if(style.length!=0){
					b=1;
					var t = "style=\"";
					for(var j=0;j< style.length;j++){
						t+=style[j]+";";
					}
					t+='" ';
					tablemark+=t;
				}
				if(colspan!=0){tablemark+="colspan=\"" + (colspan +1) + "\" ";b=1;}
				if(b)tablemark+="|";
				tablemark+=c.replace("[BR]","<br>").replace("[br]","<br>");
				colspan=0;
				}
			}
			tablemark=tablemark.concat("\n|-");
		}
		var k = "\" style=\"";
		if(tablestyle.length!=0){
			b=1;
			for(var i=0;i< tablestyle.length;i++){
				k= k.concat(tablestyle[i])
				k= k.concat(";");
			}
		}
		res = res.concat("\n{|class=\"wikitable");
		res = res.concat(k);
		res = res.concat("\"\n|-");
		res = res.concat(tablemark);
		res = res.concat("\n|}");
	}
	return res.concat(str);
}



$(document).ready(function(){
$("#wpSave").click(function()
{
	$("#wpTextbox1").val(ConvertToMediaWikiTable($("#wpTextbox1").val()));
});
});