Guest language registry. Maps language names to configurations. A guest language is: a name, a file extension, an optional prelude, and optional rewrite rules.
(register! :pattern {:extension ".pat" :prelude-file "langs/pattern/core.meme" :rules-file "langs/pattern/rules.meme"})
(resolve-lang "app.pat") → :pattern (lang-config :pattern) → {:extension ... :prelude ... :rules ...}
Guest language registry. Maps language names to configurations.
A guest language is: a name, a file extension, an optional prelude,
and optional rewrite rules.
(register! :pattern {:extension ".pat"
:prelude-file "langs/pattern/core.meme"
:rules-file "langs/pattern/rules.meme"})
(resolve-lang "app.pat") → :pattern
(lang-config :pattern) → {:extension ... :prelude ... :rules ...}(clear!)Clear all registered languages. For testing.
Clear all registered languages. For testing.
(lang-config lang-name)Get the config for a registered language. Returns nil if not found.
Get the config for a registered language. Returns nil if not found.
(register! lang-name config)Register a guest language. config keys: :extension — file extension (e.g. ".pat") :prelude-file — path to prelude .meme file (eval'd before user code) :rules-file — path to rules .meme file (eval'd, must return rule vector) :prelude — prelude forms (alternative to :prelude-file) :rules — rule vector (alternative to :rules-file) :parser — custom parser fn: (fn [tokens opts source] forms-vector) If nil, uses the default meme parser. The parser receives meme's token vector and should return a vector of Clojure forms.
Register a guest language.
config keys:
:extension — file extension (e.g. ".pat")
:prelude-file — path to prelude .meme file (eval'd before user code)
:rules-file — path to rules .meme file (eval'd, must return rule vector)
:prelude — prelude forms (alternative to :prelude-file)
:rules — rule vector (alternative to :rules-file)
:parser — custom parser fn: (fn [tokens opts source] forms-vector)
If nil, uses the default meme parser.
The parser receives meme's token vector and should
return a vector of Clojure forms.(registered-langs)List all registered language names.
List all registered language names.
(resolve-lang path)Given a file path, determine the guest language from its extension. Returns the language name keyword, or nil for unrecognized extensions. .meme files return nil (default meme, no guest language).
Given a file path, determine the guest language from its extension. Returns the language name keyword, or nil for unrecognized extensions. .meme files return nil (default meme, no guest language).
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |