@@ -16,7 +16,8 @@
|
|||||||
[com.rpl.specter.zipper :as sz]
|
[com.rpl.specter.zipper :as sz]
|
||||||
[net.deertopia.doerg.common :as common]
|
[net.deertopia.doerg.common :as common]
|
||||||
[net.deertopia.doerg.config :as cfg]
|
[net.deertopia.doerg.config :as cfg]
|
||||||
[spec-dict.main :refer [dict]])
|
[spec-dict.main :refer [dict]]
|
||||||
|
[clojure.tools.logging :as l])
|
||||||
(:import
|
(:import
|
||||||
(java.util UUID)))
|
(java.util UUID)))
|
||||||
|
|
||||||
@@ -334,6 +335,16 @@
|
|||||||
(defmulti object-spec :type)
|
(defmulti object-spec :type)
|
||||||
(defmulti recursive-object-spec :type)
|
(defmulti recursive-object-spec :type)
|
||||||
(defmulti element-spec :type)
|
(defmulti element-spec :type)
|
||||||
|
(defmulti greater-element-spec :type)
|
||||||
|
|
||||||
|
(defn- unimplemented-spec [x]
|
||||||
|
(lr/warnf "unimplemented method for %s" (:type x))
|
||||||
|
any?)
|
||||||
|
|
||||||
|
(defmethod object-spec :default [x] (unimplemented-spec x))
|
||||||
|
(defmethod recursive-object-spec :default [x] (unimplemented-spec x))
|
||||||
|
(defmethod greater-element-spec :default [x] (unimplemented-spec x))
|
||||||
|
(defmethod element-spec :default [x] (unimplemented-spec x))
|
||||||
|
|
||||||
(def ^:private nfe
|
(def ^:private nfe
|
||||||
"NFE — “no further expectations.” Used in sub-specs of `::element`
|
"NFE — “no further expectations.” Used in sub-specs of `::element`
|
||||||
@@ -342,35 +353,28 @@
|
|||||||
(s/with-gen (constantly true)
|
(s/with-gen (constantly true)
|
||||||
(constantly (gen/return {}))))
|
(constantly (gen/return {}))))
|
||||||
|
|
||||||
(s/def ::object-base
|
(s/def ::object
|
||||||
(dict {:type ::object-type}))
|
(s/multi-spec object-spec :type))
|
||||||
|
|
||||||
(s/def ::element-base
|
(s/def ::element
|
||||||
(dict ^:opt {:contents-begin ::contents-begin
|
(s/merge (dict ^:opt {:contents-begin ::contents-begin
|
||||||
:contents-end ::contents-end}
|
:contents-end ::contents-end}
|
||||||
{:children (s/coll-of ::object :kind vector?)
|
{:children (s/coll-of ::object :kind vector?)})
|
||||||
:type ::element-type}))
|
(s/multi-spec element-spec :type)))
|
||||||
|
|
||||||
(s/def ::greater-element-base
|
(s/def ::greater-element
|
||||||
(dict {:contents-begin ::contents-begin
|
(s/merge (dict {:contents-begin ::contents-begin
|
||||||
:contents-end ::contents-end
|
:contents-end ::contents-end
|
||||||
:children (s/coll-of ::object :kind vector?)
|
:children (s/coll-of
|
||||||
:type ::greater-element-type}))
|
(s/or :element ::element
|
||||||
|
:greater-element ::greater-element)
|
||||||
|
:kind vector?)})
|
||||||
|
(s/multi-spec greater-element-spec :type)))
|
||||||
|
|
||||||
(s/def ::recursive-object-base
|
(s/def ::recursive-object-base
|
||||||
(dict ^:opt {:contents-begin ::contents-begin
|
(dict ^:opt {:contents-begin ::contents-begin
|
||||||
:contents-end ::contents-end}
|
:contents-end ::contents-end}
|
||||||
{:children (s/coll-of ::object :kind vector?)
|
{:children (s/coll-of ::object-base :kind vector?)}))
|
||||||
#_#_
|
|
||||||
:type ::recursive-object-type}))
|
|
||||||
|
|
||||||
(s/def ::object
|
|
||||||
(s/merge ::object-base
|
|
||||||
(s/multi-spec object-spec :type)))
|
|
||||||
|
|
||||||
(s/def ::recursive-object
|
|
||||||
(s/merge ::recursive-object-base
|
|
||||||
(s/multi-spec recursive-object-spec :type)))
|
|
||||||
|
|
||||||
(s/def ::todo-keyword string?)
|
(s/def ::todo-keyword string?)
|
||||||
(s/def ::priority string?)
|
(s/def ::priority string?)
|
||||||
@@ -392,8 +396,7 @@
|
|||||||
|
|
||||||
;;; Specs (specific elements)
|
;;; Specs (specific elements)
|
||||||
|
|
||||||
#_
|
(defmethod element-spec "headline" [_]
|
||||||
(defmethod node-spec "headline" [_]
|
|
||||||
(dict {:todo-keyword (s/nilable ::todo-keyword)
|
(dict {:todo-keyword (s/nilable ::todo-keyword)
|
||||||
:priority (s/nilable ::priority)
|
:priority (s/nilable ::priority)
|
||||||
:level ::level
|
:level ::level
|
||||||
@@ -404,7 +407,6 @@
|
|||||||
|
|
||||||
;;; Specs (specific greater elements)
|
;;; Specs (specific greater elements)
|
||||||
|
|
||||||
#_#_
|
(defmethod greater-element-spec "org-data" [_] nfe)
|
||||||
(defmethod node-spec "org-data" [_] nfe)
|
|
||||||
|
|
||||||
(defmethod node-spec "section" [_] nfe)
|
(defmethod greater-element-spec "section" [_] nfe)
|
||||||
|
|||||||
Reference in New Issue
Block a user