참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다.
- 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R을 입력 (Mac에서는 ⌘-R)
- 구글 크롬: Ctrl-Shift-R키를 입력 (Mac에서는 ⌘-Shift-R)
- 인터넷 익스플로러 / 엣지: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.
- 오페라: Ctrl-F5를 입력.
//라이센스 GPLv2입니다.
function SplitToList(str){
var res =[];
var stack = [];
var pre_b = -1;
var pre_o = 0;
for(var i=0;i<str.length;i++)
{
switch(str[i])
{
case "<":
stack.push(
{
list_i :res.length+1,
i : i
});
if(pre_o != i)res.push(str.substring(pre_o,i));
pre_o = i+1;
break;
case ">":
if(stack.length == 0)//이전에 <이 없으면
{
//>도 그냥 장식이다. 이전에 있던 것들과 substring으로 res에 push해주자
if(pre_o != i)res.push(str.substring(pre_o,i));
res.push(">");
pre_o = i+1;
}
else//이전에 <이 있었으면
{
//<의 안쪽을 넣어주자.
res.push(str.substring(stack.pop().i,i+1));
pre_o = i+1;
}
break;
}
}
//만약에 <이 남아 있으면
//짝이 안남는 불쌍한 것들이다... 원래 위치에 넣어주자.
var o = null;
while(null != (o = stack.pop())){
res.splice(o.list_i,0,"<");
}
return res;
}
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;
var rowspan= "";
var d = [];
for(var i=0; i < line.length ; i++){
var c=line[i];
line[i] = "";
if(c.length==0)colspan++;
else{
var b=0;
var is_h = 0;
var style = [];
var l = SplitToList(c);
c = [];
for(var j = 0 ; j < l.length ; j++)
{
if(l[0] == "<" && l[l.length-1] == ">"){
var a=l[j];
var v = l.substring(1,a.length);
if(a[0]=="-")colspan = v-1;
else if(a[0]=="|"){ rowspan ="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[0]=="h")is_h=1;
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);
}
else{
c.push("<");
c.push(l[j].substring(1,l[j].length-1));
c.push(">");
}
}
else{
c.push(l[j]);
}
}
c = c.join();
if(c.length == 0){
colspan++;
continue;
}
if(is_h==0){
tablemark = tablemark + "\n|";
}
else{
tablemark = tablemark + "\n!";
}
tablemark+=rowspan;
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()));
});
});