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を用意すれば完成です