|
10 | 10 | [java.time.format DateTimeFormatter] |
11 | 11 | [java.time Clock Year Month YearMonth MonthDay DayOfWeek ZoneId Instant])) |
12 | 12 |
|
| 13 | +(defn- resolve-tag [tag] |
| 14 | + (if (symbol? tag) |
| 15 | + (let [cls (resolve tag)] |
| 16 | + (if (var? cls) |
| 17 | + ;;primitive |
| 18 | + tag |
| 19 | + (symbol (.getName ^Class cls)))) |
| 20 | + tag)) |
| 21 | + |
13 | 22 | (defn- get-only-unit-value ^long [^TemporalAmount a, ^TemporalUnit u] |
14 | 23 | (let [non-zero-units |
15 | 24 | (->> (.getUnits a) |
|
27 | 36 | (long our-value))) |
28 | 37 |
|
29 | 38 | (defmacro enumerated-entity [tp doc & {:keys [unit]}] |
30 | | - (let [fname (with-meta (symbol (jt.u/dashize (str tp))) {:tag tp}) |
| 39 | + (let [tp (resolve-tag tp) |
| 40 | + fname (with-meta (symbol (jt.u/dashize (-> (str tp) (string/split #"\.") last))) {:tag tp}) |
31 | 41 | fields (symbol (str fname "-fields"))] |
32 | 42 | `(do |
33 | 43 | (def ~fields |
|
80 | 90 | o# os#))))))))) |
81 | 91 |
|
82 | 92 | (defmacro single-field-entity [tp doc & {:keys [parseable?]}] |
83 | | - (let [fname (with-meta (symbol (jt.u/dashize (str tp))) {:tag tp}) |
| 93 | + (let [^Class tpcls (resolve tp) |
| 94 | + tp (symbol (.getName tpcls)) |
| 95 | + fname (with-meta (symbol (jt.u/dashize (-> (str tp) (string/split #"\.") last))) {:tag tp}) |
84 | 96 | arg (gensym)] |
85 | 97 | `(do |
86 | 98 | (defn ^{:doc ~(str "True if `" tp "`.")} ~(symbol (str fname "?")) |
|
122 | 134 | minor-field-ctor minor-field-default]}] |
123 | 135 | (let [[major-field-ctor major-field-type] major-field-ctor |
124 | 136 | [minor-field-ctor minor-field-type] minor-field-ctor |
125 | | - fname (with-meta (symbol (jt.u/dashize (str tp))) {:tag tp}) |
| 137 | + major-field-type (resolve-tag major-field-type) |
| 138 | + minor-field-type (resolve-tag minor-field-type) |
| 139 | + tp (resolve-tag tp) |
| 140 | + fname (with-meta (symbol (jt.u/dashize (-> (str tp) (string/split #"\.") last))) {:tag tp}) |
126 | 141 | arg (gensym) |
127 | 142 | tmp-major (with-meta (gensym) {:tag major-field-type}) |
128 | 143 | tmp-minor (with-meta (gensym) {:tag minor-field-type})] |
|
0 commit comments