場当たり的な執筆をしていると、どこで章を区切るか文字数を基準に判断したいときがありますよね。あるんだよ。
以前書いた Obsidian Tips:Templater+Better Word Countで今の章の文字数をどこでも確認 の章単位の文字数カウントも気に入っていますが、章を区切る前に「今の章、ここまでで何文字?」というのも知りたいことがある。
と気付いたので、お馴染みObsidianのTemplaterプラグイン用のスクリプトを書きました。
Templaterプラグイン自体の使い方についてはObsidianで小説を書くTips:Templaterで章番号を自動挿入 あたりで書いていますので、まだTemplater沼にハマっていない方はそちらもどうぞ。
スクリプト
<%*
const editor = this.app.workspace.activeLeaf.view.editor;
const cur = editor.getCursor();
// Get the position of the beginning of the current section
let str = editor.getRange(editor.offsetToPos(0), cur);
const sec = str.match(/(.*#\s).*?$/s);
let startOffset = 0;
if(sec) { startOffset = sec[1].length; }
str = editor.getRange(editor.offsetToPos(startOffset), cur).replace(/\r?\n/g,"");
new Notice("Character Counts\nSection top - cursor: " + str.length + "\nExcept spaces: " + str.replace(/\s/g,"").length);
%>
カンタンですね。今回は簡易的なカウントでいいかなと思ってBetter Word Countプラグインも使っていません。
特にややこしいことはしていないですが、一応解説します。
- 「ドキュメントのトップからカーソル位置まで」の文字列を取得する
- 1.を正規表現でマッチングして「カーソル位置直前の見出し開始位置(”# “の直後)」を取得する
- 2.からカーソル位置までの文字列を取得し、改行コードをないないする
- 3.の文字数を出力する。ついでに空白文字を除いた文字数も出力する。
文字数カウントは「何をどこまでカウントするのか」で色々宗派がありますよね。
見ての通り簡単なスクリプトなので、お好みに応じて弄ってみるのも一興かなと思います。
それではよきObsidianライフをʕ ·ᴥ·ʔノシ
コメント