CSViewer
CSVをデータベースとして活用できるようになったので、CSVを作る仕組みを考えてみました。 テーブルを使えば楽ですよね。 テーブルの機能も強化されたことだし。
そんなこんなでTemplaterスクリプトです。
使い方
実はスペース区切りにも対応しています。 ということでデータに空白を挟んで並べてしまう。 空白はいくら並べても構いません。
年表 出来事 1947 国連パレスチナ分割決議案を採択 1948 イスラエル独立宣言 ... ...
そしてスクリプトを実行すると表形式に変換されます。 カーソルの位置をもとに、前後をデータと見なします。 範囲選択はしないでください。 空行に挟まれた範囲だけ変換。 なので文中に埋め込むときも、スペース区切りで下書きすれば表に変換できます。
さらにスクリプトを実行すればCSV形式になります。 MarkdownとCSVがトグルで、実行ごとにぐるぐる回る。 あたかもあざなえる縄の如し。
Style Settings プラグインで Table のフォントサイズやデザインを変更しておくと、テーブルの見た目も引き締まります。
C2T.md
スクリプトは下記のようになります。
<%* e = app.workspace.activeLeaf.view.editor pos = e.getCursor().line if(pos==0) pos = 1 block = tp.file.content.split("\n\n") for(i=j=0; i<block.length && j<pos; i++) j+= block[i].split("\n").length s = block.splice(i-1, 1).toString().trim() if(s[0]=="|"){ s = s.replace(/\|/mg, ",").replace(/^,(.+),$/mg, "$1") bar = s.split("\n") bar.splice(1, 1) s = bar.join("\n") }else{ s = s.replace(/[ ,\t]+/mg, "|").replace(/^(.+)$/mg, "|$1|") bar = "\n" + s.split("\n")[0].replace(/[^|]+/g, "---") + "\n" s = s.replace(/\n/, bar) } block.splice(i-1, 0, s) s = block.join("\n\n") e.setValue(s) e.setCursor(pos, 0) %>
先頭が |
だとテーブル、って決めうちなので省力化されてる。
ご注意
Templaterのバージョンが上がって最初からアイコンが付くようになりました。 それはいいんだけどCommanderが対応してないので、アイコンの変更ができなくなってます。
まずいなあ。 ツールバーに同じアイコンが並んで区別できないや。
まとめ
データの下書きにスペース区切りはオススメ。