epsilon-clj also allows you to integrate programmatically with your codebase. Overall, it exposes several useful
functions which you can call:
generate-allGiven a template directory, model paths and output directory, generate all templates found in the template directory.
(require '[epsilon.generator :as gen])
(gen/generate-all "templates" ["model.xml"] "output" false)
The above example will take all the templates inside templates, combined with the models including model.xml and
generate files inside output. The last boolean false indicates we don't want watch mode.
!!! info This function will validate all models before generating. If failed, generation will halt.
validate-allSimilar to generate-all but only validates models. For example:
(require '[epsilon.generator :as gen])
(gen/validate-all "templates" ["model.xml"] false)
It also takes a boolean to indicate if you want watch mode.
generateGenerate a single EGX file.
(require '[epsilon.generator :as gen])
(gen/generate "templates/foo.egx" ["model.xml"] "output")
validateValidate a single EVL file.
(require '[epsilon.generator :as gen])
(gen/validate "templates/foo.evl" ["model.xml"])
watchWatch over a directory for file changes. It takes a list of predicates which will be run against file changes to determine if it should be kept or not.
watch, as well as generate-all and validate-all in watch mode will not block the current
thread. Instead, when called in watch mode they will return a map that has 2 keys: :future and :handler.
:handler refers to the function that when called when stop the current watcher.:future refers to the CompletableFuture returned by the watch service. Use this to join the watcher thread.For example:
(require '[epsilon.generator :as gen])
(let [{:keys [handler future]} (gen/watch "templates" ["model.xml"] "output")]
;; Call this function will stop the watcher thread.
(handler)
;; Wait for the watcher thread to finish and then join it.
(.get future))
The above code block will also work for generate-all and validate-all in watch mode.
Can you improve this documentation?Edit on GitHub
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 |