Yabu.log

ITなどの雑記

Jesse Donat氏のCsvToMarkdownTableを日本語(全角文字)対応させたい

以前も紹介しましたが、csvからmarkdownの表を作るツールがあります

https://donatstudios.com/CsvToMarkdownTable

ただしこのツールは文字数をjavascriptのlengthで数えているため 全角・半角関係なく1文字で数えてしまうため、作成した表のplane textがずれてしまいます。

| 番号 | 
|----| 
| 1  | 
| 2  | 
| 3  | 

本当はこうなるべき*1

| 番号 | 
|----  | 
| 1    | 
| 2    | 
| 3    | 

一行目□■■■■□ ←二文字だが全角文字なので表示は4文字分の扱い
二行目□■□□□□ ←半角文字一字分のあとは三文字埋めのスペースが入るべき

markdownのコンセプト、plane text状態でも読みやすい、に反してしまうので、 なんとか日本語でもplane textの状態で表の形を保たせたいのですが。

maxRowLen[ii] = Math.max(maxRowLen[ii], ee.length);

ここのlengthの箇所を半角全角の表示スペースに応じた処理に変えれば動きそう。 だが、少し調べて分かったがjavascriptは半角・全角に応じて文字数を返す処理が標準で存在しないらしいので、半角全角を判定する方法を自分で考えて実装する必要がある。

まぁプロポーショナルフォントを使っている環境ではこんなことやっても意味ないんだけどね。

追記:sublime textの拡張機能でできるらしい。後日検証予定

*1:固定幅フォントじゃないからわかりにくいけど許して。。。