Cosense 記法パーサー
@cosense-toolbox/parser は Cosense (旧 Scrapbox) の記法を位置情報つきの AST に変換します。ブラウザ、Node.js、Cloudflare Workers で利用でき、DOM や Node.js API には依存しません。
正規表現で文字列を探すのではなく、リンク・装飾・画像などの記法をノードとして判別します。そのため、元のテキスト上の場所を保ったまま処理できます。
TypeScriptimport { parse } from "@cosense-toolbox/parser"import { collectLinks } from "@cosense-toolbox/parser/utils"import { toHtml } from "@cosense-toolbox/parser/html"const page = parse(`今日のメモ[プロジェクトA] の進捗を確認する#あとで読む`)collectLinks(page)// → ["プロジェクトA", "あとで読む"]toHtml(page)クイックスタート
Shellnpm install @cosense-toolbox/parser必要な機能だけサブパスから読み込めます。HTML 表示の既定 CSS は別パッケージの
@cosense-toolbox/style で提供しています (既定のスタイル)。特徴
ノードにはソース上の行・列・文字オフセットが含まれます。AST はメソッドを持たないオブジェクトなので、JSON にして保存したり別スレッドへ送ったりできます。
AST の走査、リンク抽出、HTML 変換、独自形式への変換は別のサブパスに分かれています。使わない機能はバンドルに含めずに済みます。
記法や独自ノードを追加でき、追加したノードの型は TypeScript の走査・描画にも反映されます。
使う API を選ぶ
@cosense-toolbox/parser は、ページ全体や1行の記法を AST に変換します。具体的な関数の使い分けは パース をご覧ください。@cosense-toolbox/parser/utils は AST の検索・走査・リンク抽出、@cosense-toolbox/parser/html は HTML / hast への変換を担当します。Markdown から読むときは、別パッケージの Markdown から読む (@cosense-toolbox/markdown) を使います。@cosense-toolbox/parser/compile はプレーンテキストや独自形式への変換、@cosense-toolbox/parser/extensions はパーサーへの記法追加に使います。@cosense-toolbox/parser/schema の isPage は、外部から受け取った値が AST の形かどうかを検証します。次に読む
動く例は パーサーの出力例 にあります。公開 API は beta のため、利用するバージョンを固定してください。