This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2023-01-26
Channels
- # aleph (9)
- # announcements (31)
- # babashka (23)
- # beginners (35)
- # biff (2)
- # calva (5)
- # cider (10)
- # clara (11)
- # clerk (114)
- # clj-kondo (18)
- # cljdoc (37)
- # clojars (7)
- # clojure (24)
- # clojure-austin (10)
- # clojure-europe (27)
- # clojure-nl (1)
- # clojure-norway (23)
- # clojure-uk (2)
- # clojurescript (18)
- # conjure (2)
- # core-async (6)
- # cursive (21)
- # datomic (3)
- # fulcro (15)
- # introduce-yourself (7)
- # lsp (32)
- # malli (57)
- # meander (5)
- # music (1)
- # nbb (2)
- # off-topic (17)
- # pathom (6)
- # rdf (4)
- # reagent (8)
- # releases (2)
- # shadow-cljs (4)
- # slack-help (23)
- # spacemacs (6)
- # tools-build (32)
Hello, I'm learning meander and trying to migrate my existing clojure code for some API client to it. So far it goes pretty good, but I have one use case I'd like to implement and I'm not sure how to do that. The input looks like the following:
{:etag "doesn't matter"
:uuid "E6FDD9A4-3820-11ED-A2D1-70110F7B78B9"
:called_on "2022-09-19 13:42:28.394228+00"
:entity
{:prop
[{:name "advertiser_id" :value "1"}
{:name "concept_id" :value "2"}
{:name "name" :value "Some name"}
{:name "width" :value "320"}
{:name "height" :value "50"}
{:name "file_type" :value "jpg"}]
:version 3
:type "some type"
:name "Some name"
:id 5
:entity
[{:id 6
:prop
[{:name "atomic_creative_id" :value "9"}
{:name "is_https" :value "YES"}
{:name "url" :value ""}]
:rel "atomic_creative_detected_tag_urls"
:type "atomic_creative_detected_tag_url"
:name "Atomic Creative Detected Tag Urls 9"}
{:id 7
:prop
[{:name "atomic_creative_id" :value "10"}
{:name "is_https" :value "YES"}
{:name "url" :value ""}
{:name "vendor_domain_id" :value "641"}]
:rel "atomic_creative_detected_tag_urls"
:type "atomic_creative_detected_tag_url"
:name "Atomic Creative Detected Tag Urls 10"}
{:id 8
:prop
[{:name "atomic_creative_id" :value "11"}
{:name "is_https" :value "YES"}
{:name "url" :value ""}
{:name "vendor_domain_id" :value "812"}]
:rel "atomic_creative_detected_tag_urls"
:type "atomic_creative_detected_tag_url"
:name "Atomic Creative Detected Tag Urls 11"}]}
:status {:code "ok"}}
I need to fetch url
value for :prop
where vendor_domain_id
value is 812
. So the correct result would be ""
.
Not sure what I should use, I'm trying rewrite
:
(m/rewrite input
{:entity {:entity [!entities ...]}}
[(m/cata !entities) ...]
{:prop [!props ...]}
[(m/cata !props) ...]
{:name ?name :value ?value}
[(m/keyword ?name) ?value])
But I guess I need to combine it with pred
or gather
? Is it good use case for meander or maybe I should rather stick with pure clojure maps and filters? Thank you in advance.At a glance it seems like a fine use of meander. I’ll check it tomorrow when I get time.
This has shown me that I don't remember much about meander. I really struggled. Anyways, here's one way.
(-> input
(m/rewrite
{:entity {:entity [{:prop [{:name !name :value !value} ..!n]} ...]}}
[{& ([!name !value] ..!n)} ...])
(m/match
(m/gather {"vendor_domain_id" "812"
"url" !url})
!url))
;; [""]