Released 2024-05-03.
- Clojure version 1.11.3 to the set of Clojure versions that ART is tested with.
- Java 21, an LTS release, to the set of Java versions that ART is tested with.
watch
debounces re-render requests with a timeout expressed in milliseconds specified with the CLI option--watch-timeout-ms
and the ART rendering batch option:watch-timeout-ms
.
- BREAKING CHANGE: Renamed CLI command
auto
towatch
, truer to its purpose. - Approach to automated testing with Clojure
Instead of testing on every possible supported version of Clojure:
- Test only on the earliest supported version of Clojure (1.10.0 at this time) to guarantee API compatibility with the minimum stated supported version of Clojure, and
- Test the most recent release of each minor version of Clojure (1.10 and 1.11 at this time). This change reduces complication in the build system as well as time to test results. The interpretation is: A given version of ART and its associated, fully-passing test suite is meant to be run on the most recent Clojure patch release.
- Add
:stack
tovivid.art/*render-context*
. - Update clojars repository URL to
https://repo.clojars.org/
. - Replace
reduce-fsm
withtilakone
. With this change,net.vivid-inc/art
is free of Clojure-specific dependencies, removing an obstacle to expanding this library's support for to other platforms like ClojureScript. - Removed dependency on the thin wrapper
nextjournal/beholder
, replacing it with a direct dependency onio.methvin/directory-watcher
.
Released 2023-07-15.
- CLI tools
clj-art
andlein-art
provide their classpaths to the ART template evaluation environment, as well as a reworked:dependencies
mechanism that uses pomegranate to add further dependencies. This deprecates the prior ShimDandy. - Support for Clojure versions 1.11.0, 1.11.1.
- CLI tools offer these ART commands (not yet implemented for
clj-art
):auto
: Watches template files and directories, re-rendering on changes.config
: Dump the effective ART configuration to stdout.help
: Display tool help.render
: ART's default behavior of rendering templates.
- Template authors can express blocks or partials -like structuring of a collection of templates through recursive
use of
(vivid.art/render :bindings ...)
, a new*render-context*
, and(yield)
ing from those bindings. - Parallel rendering test suite
vivid.art.parallelism-test
. Demonstrates use of(render)
using(pmap)
as well as(core.async/go)
and(core.async/thread)
.
- Template
(emit)
function accepts any number of args, emitting each in order of appearance to the output. :dependencies
now expects a Leiningen-style dependencies map.(vivid.art/render)
function signature now accepts options as keyword arguments. In practice, you only need to replace the map with its contents (delete the curly braces surrounding the map contents).art-cli
honors symlinks.
- ShimDandy -based
:dependencies
behavior along withboot-art
.
Released 2022-02-25.
- Pretty-prints error details as a Clojure data structure. Good starting point for improving on error diagnoses messaging.
- CLI tool didn't catch signals and print error messages properly.
Released 2022-02-24.
art-cli
-based tooling allows callers to specify a path to a JSON file to provide bindings.- Ring server cookbook recipe.
- In alignment with clojars.org verified group names
the Maven Group name
vivid
that had served as the umbrella for the ART project changes in this 0.6.0 release tonet.vivid-inc
. Please update your dependencies from i.e.vivid/art
tonet.vivid-inc/art
for ART 0.6.0 onwards. - Bindings can be specified as paths to EDN or JSON files. In such cases, the content of the given bindings file is set
as the value of a symbol, created by removing the file extension from the base filename (
.edn
,.json
). - The default delimiters has been changed to a new
vivid.art.delimiters/lispy
that looks like<( )>
(note how they ooze with LISP-iness); changed from the prior default ofvivid.art.delimiters/erb
. - Minimum supported Clojure version is advanced from 1.9.0 to 1.10.0 (minimum version supported by farolero).
- With the goal of reducing
net.vivid-inc/art
project dependencies, branched off CLI-specific code fromnet.vivid-inc/art
into a newnet.vivid-inc/art-cli
lib. The:dependencies
option tovivid.art/render
is also migrated there. - Adding Java 17, an LTS release, to the set of Java versions that ART is tested with.
- farolero replaces
special
for condition handling. - Upgraded org.clojure/tools.cli from version 1.0.196 to the new version 1.0.206 which offers the
:multi
option, allowing >= 2 binding specifications on the CLI.
Released 2021-01-19.
- Introducing Clojure CLI tools plugin
clj-art
. - Cookbook recipes in README files and example projects.
- (Unstable until version 1.0) Render option
:to-phase
allows the dataflow to stop at an earlier(render)
phase. Useful for inspecting ART output at intermediate phases for diagnosis and for understanding ART's behavior.
- Renamed
vivid/ash-ra-template
tovivid/art
to more closely mirror its Clojure namespace. - License changed from EPL to Apache License, version 2.0.
- Honors the Java system property
user.dir
when determining file paths. The defect came to light during a Maven multi-module build usingvivid:clojure-maven-plugin
.
Released 2019-07-05.
- Bindings can be supplied with the
(render {:bindings {...})
option. - Template delimiter definitions can be changed from the default ERB-style with the
(render {:delimiters {...}})
option. vivid.art.delimiters
offers a selection of pre-defined delimiter sets:erb
,jinja
,mustache
, andphp
.- Introducing Leiningen plugin
lein-art
. - Both the Boot task and Leiningen plugin are at feature parity, supporting all of
(render)
's options.
- Changed template parsing mechanism from regular expressions to instaparse.
- Changed
(render)
from accepting options as keyword arguments to an optional options map.
Released 2019-05-03.
- Defining the initial evaluation environment of ART template code as
user
.
- Simplified the renderer namespace from
vivid.art.core/render
tovivid.art/render
. - Re-organizing the project into two sub-projects:
ash-ra-template
the library, and a Boot pluginboot-art
.
Released 2019-04-13.
- Addition of automated tests.
- Switch from
eval-soup
to an embedded evaluation environment based on ShimDandy.
Released 2017-11-20.
- Use
eval-soup
to render templates featuring Clojure language processing with ERB 2.0-esque syntax.