A Crystal version of Pope
A fast, minimal and micro template engine for strings only, it plays well where you want to embed micro templates inside your module.
- Add the dependency to your
shard.yml
:
dependencies:
pope.cr:
github: krthr/pope.cr
- Run
shards install
See the API page > https://krthr.github.io/pope.cr/
require "pope.cr"
data = {
user: {
id: 123,
username: "krthr",
admin: true,
config: {
email: "test@test.com",
},
},
}
Pope.pope(
"The user {{user.username | upper}} with id {{user.id}} is cool",
data
) # "The user KRTHR with id 123 is cool"
Pope.prop(data, "user.id") # 123
Pope.prop(data, "user.config.email") # test@test.com
Pope.prop(data, "nananana") # nil
- Fork it (<https://github.com/krthr/pope.cr/fork>)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Adding more filters is fairly straightforward:
-
Add another member to the
Filters
enum insrc/pope.cr
-
Update the
Filters
enum class's staticparse
method to add a case for your filter's string identifier (so"upper"
for theUpper
filter, for example) -
Update the
Filters
enum class'sapply
instance method to actually do the necessary value transformation(s) -
Add tests for your new filter(s) (see
spec/pope_spec.cr
for examples)
- krthr - creator and maintainer