Files
Decodal/doc/manual/souce/components.md
T

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 として提供される。 DecodalLanguageServiceglobalsloadImportcompleteImport を渡すことで、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 を参照する。