Result
万能ではないですが、ExcelやGoogleスプレッドシートなどの表のコピーをMarkdown記法のtableに自動変換する、みたいなの
地味に便利かも。コードはvanillaです
javascript
var editor = document.getElementById("editor");
function columnWidth(rows, columnIndex) {
return Math.max.apply(
null,
rows.map(function (row) {
return row[columnIndex].length;
})
);
}
function looksLikeTable(data) {
return true;
}
editor.addEventListener("paste", function (event) {
var clipboard = event.clipboardData;
var data = clipboard.getData("text/plain").trim();
if (looksLikeTable(data)) {
event.preventDefault();
} else {
return;
}
var rows = data.split(/[\n\u0085\u2028\u2029]|\r\n?/g).map(function (row) {
console.log(row);
return row.split("\t");
});
var columnWidths = rows[0].map(function (column, columnIndex) {
return columnWidth(rows, columnIndex);
});
var markdownRows = rows.map(function (row, rowIndex) {
return (
"| " +
row
.map(function (column, index) {
return column + Array(columnWidths[index] - column.length + 1).join(" ");
})
.join(" | ") +
" |"
);
row.map;
});
markdownRows.splice(
1,
0,
"|" +
columnWidths
.map(function (width, index) {
return Array(columnWidths[index] + 3).join("-");
})
.join("|") +
"|"
);
event.target.value = markdownRows.join("\n");
return false;
});
書き方はやや古めです。必要に応じて書き直してください
html
<textarea id="editor"></textarea>
指定したidを与えたtextareaを用意すれば完成です
