C++를 좋아합니다. Rust는 하고 싶은데 아직 실제로 쓰기에는 라이브러리가 부족합니다. 특히 윈도우에서 GUI라이브러리...
테이블 동적
/*
* 이 화면은 JavaScript 스크래치패드입니다.
*
* JavaScript 코드를 입력하고, 마우스 오른쪽 클릭을 하거나 실행 메뉴에서 다음 중 하나를 선택하세요:
* 1. 실행: 선택한 코드를 실행하여 평가합니다. (Ctrl+R),
* 2. 검사: 객체 검사기를 띄워 결과를 표시합니다. (Ctrl+I), or,
* 3. 표시: 실행 결과를 선택 부분 아래에 주석으로 삽입합니다. (Ctrl+L)
*/
var div = document.createElement("div");
var in_iframe = document.createElement("iframe");
in_iframe.src = "about:blank";
in_iframe.width = "800px";
in_iframe.height = "600px";
document.body.appendChild(in_iframe);
in_iframe.style.background = "#FFF";
var table = document.createElement("table");
table.innerHTML = "<tr><td></td><td></td></tr><tr><td></td><td></td></tr>";
table.border = "1";
table.contentEditable = true;
in_iframe.onload = function(){
in_iframe.contentDocument.body.appendChild(table);
in_iframe.contentDocument.body.contentEditable = true;
}
function tableGenerate(obj){
var res = [];
if(obj.nodeName == "#text"){
return obj.nodeValue;
}
else if(obj.nodeName == "BR"){
return "<br/>";
}
else if(obj.nodeName == "B"){
res.push("'''");
}
else if(obj.nodeName== "TR"){
res.push("|-\n");
}
else if(obj.nodeName== "TD"){
res.push("|");
}
else if(obj.nodeName == "TH"){
res.push("!");
}
else if(obj.nodeName == "A"){
var href = obj.href;
if(href.startsWith("https://librewiki.net/wiki") || href.startsWidth("http://librewiki.net/wiki")){
res.push("[[");
res.push(href.replace("https://librewiki.net/wiki/","").replace("http://librewiki.net/wiki/"));
res.push("|");
}
}
else if(obj.nodeName == "TBODY"){
res.push("{|class='wikitable' style='width:100%;'\n")
}
if(obj.childNodes.length != 0){
var i = 0;
for(i = 0 ; i < obj.childNodes.length ; i++){
res.push(tableGenerate(obj.childNodes[i]));
}
}
if(obj.nodeName == "B"){
res.push("'''");
}
else if(obj.nodeName=="TD"){
res.push("\n");
}
else if(obj.nodeName=="TBODY"){
res.push("|-\n|}");
}
else if(obj.nodeName == "A"){
res.push("]]");
}
return res.join("");
}