What is Balagan
Balagan is a tiny Clojure library for data structure transformation inspired by Enlive.
Supported Clojure Versions
Balagan targets Clojure 1.4+, tested against 3 Clojure versions x 2 JDKs on travis-ci.org, and is released under the Eclipse Public License.
Documentation and Examples
Balagan builds on ideas from Enlive. It may help to get familiar with them first.
Let’s say you’re working on a Data Access layer for the application. You have a user entry represented as hash:
1 2 3 4 |
|
Transformation
Now, we can start transforming users the way we want: add, remove fields based on certain conditions.
1 2 3 4 5 |
|
Queries
Queries are very similar to how you’d query your data with filter
in Clojure:
1 2 3 4 |
|
Results are returned in the order they’ve been seen in your data structure, however you should be aware of the fact that iterating over the hash in Clojure doesn’t guarantee you order.
Path Queries
Path queries are most useful when you’d like to fire a function against some part of your data (be it processing, database initialization or anything else.
You can also run predicate queries based on your map, for example if you want to configure your database servers from rather big and complex config:
1 2 3 4 5 6 7 8 9 |
|
In this example, configure-redis-cache
funciton will receive two arguments: value
and path
:
1 2 3 4 5 6 7 |
|
You can also do wildcard-matching with :*
, for example:
1 2 3 4 5 |
|
Learn more in the documentation section.
Community
To subscribe for announcements of releases, important changes and so on, please follow @ClojureWerkz on Twitter.
License
Distributed under the Eclipse Public License, the same as Clojure.
The source is available on GitHub. We also use GitHub to track issues.
About the Author
The ClojureWerkz Team.