2021-06-18 14:18:46 +00:00
|
|
|
(ns dda.c4k-common.yaml
|
2021-06-18 13:49:43 +00:00
|
|
|
(:require
|
|
|
|
[clojure.java.io :as io]
|
|
|
|
[clj-yaml.core :as yaml]
|
2021-10-31 07:51:03 +00:00
|
|
|
[clojure.walk]
|
|
|
|
[orchestra.core :refer [defn-spec]]
|
2021-11-05 13:11:20 +00:00
|
|
|
[dda.c4k-common.predicate :as cp]))
|
2021-06-18 13:49:43 +00:00
|
|
|
|
2021-10-31 07:51:03 +00:00
|
|
|
|
2021-11-05 12:51:22 +00:00
|
|
|
|
2021-11-05 13:11:20 +00:00
|
|
|
(defn-spec resolve-lazy-sequences cp/map-or-seq?
|
|
|
|
[lazy-seq cp/map-or-seq?]
|
2021-06-18 13:49:43 +00:00
|
|
|
(clojure.walk/postwalk #(if (instance? clojure.lang.LazySeq %)
|
|
|
|
(into [] %)
|
|
|
|
%) lazy-seq))
|
|
|
|
|
2021-11-05 13:11:20 +00:00
|
|
|
(defn-spec from-string cp/map-or-seq?
|
|
|
|
[input string?]
|
|
|
|
(resolve-lazy-sequences (yaml/parse-string input)))
|
2021-06-18 13:49:43 +00:00
|
|
|
|
2021-11-05 13:11:20 +00:00
|
|
|
(defn-spec to-string string?
|
|
|
|
[edn cp/map-or-seq?]
|
2021-07-09 14:21:17 +00:00
|
|
|
(yaml/generate-string edn :dumper-options {:flow-style :block}))
|
|
|
|
|
|
|
|
(defn dispatch-by-resource-name
|
2021-07-09 14:39:36 +00:00
|
|
|
[resource]
|
|
|
|
:clj)
|
2021-07-09 14:21:17 +00:00
|
|
|
|
2021-07-09 14:39:36 +00:00
|
|
|
(defmulti load-resource dispatch-by-resource-name)
|
|
|
|
|
|
|
|
(defmethod load-resource :clj [resource-name]
|
2021-11-05 13:11:20 +00:00
|
|
|
(slurp (io/resource resource-name)))
|