2.9 KiB
Packages and Integrations
Decodal は実行、ホスト組み込み、言語サービス、エディタ統合を用途別の package として提供する。
Rust
decodal
Rust アプリケーション向けの runtime と embedding API である。 source の parse・evaluate・materialize、host global、source または structured value の import を扱う。
[dependencies]
decodal = "0.4"
Rust struct から Decodal schema と decoder を生成する場合は derive feature を有効にする。
[dependencies]
decodal = { version = "0.4", features = ["derive"] }
正規表現制約を検証する場合は regex feature を有効にする。
この feature は std を必要とする。
decodal-language-service
transport に依存しない semantic evaluation と completion を提供する。
アプリケーションの HostEnvironment をそのまま受け取るため、本番評価と編集時評価で global bindings と import 規則を共有できる。
decodal-lsp
language service を Language Server Protocol に接続する。
stdio server のほか、client の InitializeParams からアプリケーション固有の environment を構築する library API を提供する。
decodal-language-tools
source formatter など、source text を扱う共通ツールを提供する。 formatter は Rust、LSP、WebAssembly の各統合から同じ実装を利用できる。
JavaScript and WebAssembly
decodal-wasm
browser と WebAssembly 対応 runtime 向けの evaluator と language service である。
npm install decodal-wasm
JSR では @hare/decodal-wasm として提供される。
DecodalLanguageService に globals、loadImport、completeImport を渡すことで、JavaScript が所有する environment を評価と補完で共有できる。
decodal-codemirror
CodeMirror 6 向けの language support である。 syntax highlighting、folding、indentation、Decodal formatter との統合を提供する。
npm install decodal-codemirror
JSR では @hare/decodal-codemirror として提供される。
semantic evaluation と completion が必要な場合は decodal-wasm の language service と組み合わせる。
Editor syntax
Tree-sitter grammar は、Tree-sitter を採用するエディタで構文解析と highlighting を行うための統合である。 Decodal runtime、formatter、LSP の利用には Tree-sitter は必要ない。
用途ごとの選択は次の通りである。
- Rust での実行と組み込み:
decodal - browser での実行と semantic tooling:
decodal-wasm - CodeMirror 6:
decodal-codemirror - transport 非依存の Rust language service:
decodal-language-service - 一般的な editor client:
decodal-lsp - Tree-sitter 採用 editor の syntax grammar: Tree-sitter integration
具体的な environment の構築方法は Embedding を参照する。