Skip to content

Commit c00c6ac

Browse files
committed
addresses #322 by adding get filter
tests, code, docs, changes updated Signed-off-by: Sean Corfield <[email protected]>
1 parent 7dd111f commit c00c6ac

File tree

4 files changed

+25
-3
lines changed

4 files changed

+25
-3
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ A fast, [Django](https://docs.djangoproject.com/en/dev/ref/templates/builtins/)
6565
[take](#take)
6666
[drop](#drop)
6767
[drop-last](#drop-last)
68+
[get](#get)
6869
[get-digit](#get-digit)
6970
[hash](#hash)
7071
[join](#join)
@@ -513,6 +514,8 @@ Similar to drop:
513514

514515
`(render "{{seq-of-some-sort|drop-last:4}}" {:seq-of-some-sort [:dog :cat :bird :bird :bird :is :the :word]})` =\> `[:dog :cat :bird :bird]`
515516

517+
#### get
518+
`(render "{{my-map|get:@key}}" {:my-map {:a 1 :b 2} :key :b})` => `2`
516519

517520
#### get-digit
518521
`(render "{{tis-a-number|get-digit:1}}" {:tis-a-number 12.34567})` => `7`

changes.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
* 1.12.next - [add `get` filter](https://github.com/yogthos/Selmer/issue/322)
12
* 1.12.69 - fix relfection warning
23
* 1.12.68 - fix handling nulls when parsing script tags
34
* 1.12.67 - fix reflection warning parsing uri

src/selmer/filters.clj

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ map. The rest of the arguments are optional and are always strings."
5757
(-> (.getTime ^java.sql.Time d)
5858
(Instant/ofEpochMilli)
5959
(LocalDateTime/ofInstant (ZoneId/systemDefault)))
60-
60+
6161
(instance? java.sql.Timestamp d)
6262
(-> (.getTime ^java.sql.Timestamp d)
6363
(Instant/ofEpochMilli)
@@ -70,7 +70,7 @@ map. The rest of the arguments are optional and are always strings."
7070
(-> (.toInstant ^java.util.Date d)
7171
(.atZone (ZoneId/systemDefault))
7272
(.toLocalDateTime))
73-
73+
7474
(instance? java.time.Instant d)
7575
(-> (.atZone ^java.time.Instant d (ZoneId/systemDefault))
7676
(.toLocalDateTime))
@@ -553,7 +553,10 @@ map. The rest of the arguments are optional and are always strings."
553553
(throw (Exception. (str number " does not appear to be a valid phone number"))))))
554554

555555
:name
556-
name}))
556+
name
557+
558+
:get
559+
get}))
557560

558561

559562
(defn get-filter

test/selmer/core_test.clj

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1130,6 +1130,21 @@
11301130
(is (= "quux" ;; test nested lookup
11311131
(render "{{name|default:@foo.bar.baz}}" {:name nil :foo {:bar {:baz "quux"}}}))))
11321132

1133+
(deftest filter-get-tests
1134+
(is (= "bar"
1135+
(render "{{data|get:\"foo\"}}" {:data {"foo" "bar" "baz" "quux"}})))
1136+
(is (= "quux"
1137+
(render "{{data|get:\"baz\"}}" {:data {"foo" "bar" "baz" "quux"}})))
1138+
(is (= ""
1139+
(render "{{data|get:\"nonexistent\"}}" {:data {"foo" "bar" "baz" "quux"}})))
1140+
(is (= "default-value"
1141+
(render "{{data|get:\"nonexistent\":\"default-value\"}}" {:data {"foo" "bar" "baz" "quux"}})))
1142+
(is (= "2"
1143+
(render "{{my-map|get:@key}}" {:my-map {:a 1 :b 2} :key :b})))
1144+
(let [data {:x {"a" 1 "b" 2} :ys ["a" "b"]}]
1145+
(is (= "12"
1146+
(render "{% for y in ys %}{{x|get:@y}}{% endfor %}" data)))))
1147+
11331148
(deftest custom-resource-path-setting
11341149
(is (nil? *custom-resource-path*))
11351150
(do

0 commit comments

Comments
 (0)