epsilon-clj also allows you to integrate programmatically with your codebase. Overall, it exposes several useful
functions which you can call in your code.
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 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.
!!! important
Due to a certain bug, on Windows, any modification to the
models will not trigger regeneration if generate-all is in watch mode.
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.
!!! important
Due to a certain bug, on Windows, any modification to the
models will not trigger regeneration if validate-all is in watch mode.
generateTake a single template and run generation with it.
(require '[epsilon.generator :as gen])
(gen/generate "templates/foo.egx" ["model.xml"] "output")
validateTake a single EVL file and run validation with it.
(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. For example:
(require '[epsilon.generator :as gen])
(gen/watch "templates" ["model.xml"] "output" [egl? egx?])
will trigger a regeneration every time a template or template coordinator is changed.
!!! important
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.
```clojure
(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 |