「CSVをWikiの表組み書式に変換する」の編集履歴(バックアップ)一覧はこちら
CSVをWikiの表組み書式に変換する - (2012/01/01 (日) 23:45:06) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
CSVをWikiの表組み書式に変換します
テキストエリアにCSVを貼りつけて変換ボタンを押してください
#javascript(){{
var CSV2WikiTable = function(root, isAtwiki) {
var brPlugin;
if (isAtwiki) {
brPlugin = '&br()';
} else {
brPlugin = '&br;';
}
var idConvert = 'my_buttonconvert';
var idUndo = 'my_buttonundo';
var idTextArea = 'my_textarea';
var defaultRows = 10;
var defaultCols = 10;
var uLimitRows = 10;
var prevText = "";
var isConverted = false;
function createButton(id, value) {
var button = document.createElement('input');
button.id = id;
button.type = 'button';
button.value = value;
return(button);
}
function createTextArea(id) {
var textarea = document.createElement('textarea');
textarea.id = id;
textarea.cols = defaultCols;
textarea.rows = defaultRows;
textarea.style.width = '100%';
return(textarea);
}
function resizeTextArea(textarea) {
var lines = textarea.value.split('\n').length;
var tmp = lines;
for (;;) {
if (tmp == uLimitRows) {
tmp = lines;
break;
} else if (tmp === 0) {
tmp = uLimitRows;
break;
}
tmp--;
}
textarea.rows = tmp;
}
function csv2table(text) {
var escape = false;/* エスケープフラグ */
var bol = true;/* 行頭フラグ */
var i = 0;
var textarray = text.split('');
textarray.push(null);/* 番兵 */
for (;;) {
if (bol) {
textarray.splice(i, 0, '|');
i++;
}
var c = textarray[i];
if (c === null) {/* 番兵が見つかったので終了 */
textarray.pop();
break;
}
switch (c) {
case ',':
if (escape === false) {
textarray[i] = '|';
}
i++;
bol = false;
break;
case '\"':
textarray.splice(i, 1);
if (escape) {
if (textarray[i] == '\"') {/* エスケープされたダブルクオート */
i++;
} else {
escape = false;
}
} else {
escape = true;
}
bol = false;
break;
case '\r\n':
case '\r':
case '\n':
if (escape) {/* セル内改行 */
textarray[i] = brPlugin;
i++;
} else {
if (bol) {
textarray.splice(i - 1, 2);
i--;
} else {
textarray.splice(i, 0, '|');
i += 2;
}
bol = true;/* エスケープしてないときにのみ行頭フラグオン */
}
break;
case '|':/* 置換する以外はその他の文字と一緒 */
textarray[i] = '|';
i++;
bol = false;
break;
default:
i++;
bol = false;
break;
}
}
if (bol) {
textarray.pop();
} else {
textarray.push('|');
}
return(textarray.join(''));
}
var buttonConvert = createButton(idConvert,'変換');
var buttonUndo = createButton(idUndo,'元に戻す');
var textArea = createTextArea(idTextArea);
buttonConvert.onclick = function () {
prevText = textArea.value;
textArea.value = csv2table(prevText);
isConverted = true;
resizeTextArea(textArea);
};
buttonUndo.onclick = function () {
if (isConverted) {
textArea.value = prevText;
resizeTextArea(textArea);
}
};
textArea.onkeyup = function () {
resizeTextArea(textArea);
};
root.appendChild(buttonConvert);
root.appendChild(buttonUndo);
root.appendChild(textArea);
};
/*@wikiで使うときはこっち*/
var thisScript = (function (e) { if(e.nodeName.toLowerCase() == 'script') return e; return(arguments.callee(e.lastChild)); })(document);
var thisScriptParent = thisScript.parentNode;
new CSV2WikiTable(thisScriptParent, 1);
/*new CSV2WikiTable(document.documentElement);*/
}}
CSVをWikiの表組み書式に変換します
テキストエリアにCSVを貼りつけて変換ボタンを押してください
#javascript(){{
/* NYSL Version 0.9982 http://www.kmonos.net/nysl/ */
var CSV2WikiTable = function(root, isAtwiki) {
var brPlugin;
if (isAtwiki) {
brPlugin = '&br()';
} else {
brPlugin = '&br;';
}
var idConvert = 'my_buttonconvert';
var idUndo = 'my_buttonundo';
var idTextArea = 'my_textarea';
var defaultRows = 10;
var defaultCols = 10;
var uLimitRows = 10;
var prevText = "";
var isConverted = false;
function createButton(id, value) {
var button = document.createElement('input');
button.id = id;
button.type = 'button';
button.value = value;
return(button);
}
function createTextArea(id) {
var textarea = document.createElement('textarea');
textarea.id = id;
textarea.cols = defaultCols;
textarea.rows = defaultRows;
textarea.style.width = '100%';
return(textarea);
}
function resizeTextArea(textarea) {
var lines = textarea.value.split('\n').length;
var tmp = lines;
for (;;) {
if (tmp == uLimitRows) {
tmp = lines;
break;
} else if (tmp === 0) {
tmp = uLimitRows;
break;
}
tmp--;
}
textarea.rows = tmp;
}
function csv2table(text) {
var escape = false;/* エスケープフラグ */
var bol = true;/* 行頭フラグ */
var i = 0;
var textarray = text.split('');
textarray.push(null);/* 番兵 */
for (;;) {
if (bol) {
textarray.splice(i, 0, '|');
i++;
}
var c = textarray[i];
if (c === null) {/* 番兵が見つかったので終了 */
textarray.pop();
break;
}
switch (c) {
case ',':
if (escape === false) {
textarray[i] = '|';
}
i++;
bol = false;
break;
case '\"':
textarray.splice(i, 1);
if (escape) {
if (textarray[i] == '\"') {/* エスケープされたダブルクオート */
i++;
} else {
escape = false;
}
} else {
escape = true;
}
bol = false;
break;
case '\r\n':
case '\r':
case '\n':
if (escape) {/* セル内改行 */
textarray[i] = brPlugin;
i++;
} else {
if (bol) {
textarray.splice(i - 1, 2);
i--;
} else {
textarray.splice(i, 0, '|');
i += 2;
}
bol = true;/* エスケープしてないときにのみ行頭フラグオン */
}
break;
case '|':/* 置換する以外はその他の文字と一緒 */
textarray[i] = '|';
i++;
bol = false;
break;
default:
i++;
bol = false;
break;
}
}
if (bol) {
textarray.pop();
} else {
textarray.push('|');
}
return(textarray.join(''));
}
var buttonConvert = createButton(idConvert,'変換');
var buttonUndo = createButton(idUndo,'元に戻す');
var textArea = createTextArea(idTextArea);
buttonConvert.onclick = function () {
prevText = textArea.value;
textArea.value = csv2table(prevText);
isConverted = true;
resizeTextArea(textArea);
};
buttonUndo.onclick = function () {
if (isConverted) {
textArea.value = prevText;
resizeTextArea(textArea);
}
};
textArea.onkeyup = function () {
resizeTextArea(textArea);
};
root.appendChild(buttonConvert);
root.appendChild(buttonUndo);
root.appendChild(textArea);
};
/* @wikiで使うときはこっち */
var thisScript = (function (e) { if (e.nodeName.toLowerCase() === 'script') return e; return(arguments.callee(e.lastChild)); })(document);
new CSV2WikiTable(thisScript.parentNode, 1);
/*new CSV2WikiTable(document.documentElement);*/
}}
表示オプション
横に並べて表示:
変化行の前後のみ表示: