|
65 | 65 | (defn- quarter->month [q]
|
66 | 66 | (Math/min 12 (Math/max 1 (long (inc (* 3 (dec q)))))))
|
67 | 67 |
|
68 |
| -(defrecord MonthDayFieldProperty [^MonthDay o, ^TemporalField field] |
| 68 | +(deftype MonthDayFieldProperty [^MonthDay o, ^TemporalField field] |
69 | 69 | jt.c/WritableProperty
|
70 | 70 | (with-value [_ v]
|
71 | 71 | (condp = field
|
|
74 | 74 | IsoFields/QUARTER_OF_YEAR (.withMonth o (quarter->month v)))))
|
75 | 75 |
|
76 | 76 | (alter-meta! #'->MonthDayFieldProperty assoc :private true)
|
77 |
| -(alter-meta! #'map->MonthDayFieldProperty assoc :private true) |
78 | 77 |
|
79 |
| -(defrecord DayOfWeekFieldProperty [^DayOfWeek o, ^TemporalField field] |
| 78 | +(deftype DayOfWeekFieldProperty [^DayOfWeek o, ^TemporalField field] |
80 | 79 | jt.c/WritableProperty
|
81 | 80 | (with-value [_ v]
|
82 | 81 | (condp = field
|
83 | 82 | ChronoField/DAY_OF_WEEK (DayOfWeek/of v))))
|
84 | 83 |
|
85 | 84 | (alter-meta! #'->DayOfWeekFieldProperty assoc :private true)
|
86 |
| -(alter-meta! #'map->DayOfWeekFieldProperty assoc :private true) |
87 | 85 |
|
88 |
| -(defrecord MonthFieldProperty [^Month o, ^TemporalField field] |
| 86 | +(deftype MonthFieldProperty [^Month o, ^TemporalField field] |
89 | 87 | jt.c/WritableProperty
|
90 | 88 | (with-value [_ v]
|
91 | 89 | (condp = field
|
92 | 90 | ChronoField/MONTH_OF_YEAR (Month/of v)
|
93 | 91 | IsoFields/QUARTER_OF_YEAR (Month/of (quarter->month v)))))
|
94 | 92 |
|
95 | 93 | (alter-meta! #'->MonthFieldProperty assoc :private true)
|
96 |
| -(alter-meta! #'map->MonthFieldProperty assoc :private true) |
97 | 94 |
|
98 |
| -(defrecord ZoneOffsetFieldProperty [^ZoneOffset o, ^TemporalField field] |
| 95 | +(deftype ZoneOffsetFieldProperty [^ZoneOffset o, ^TemporalField field] |
99 | 96 | jt.c/WritableProperty
|
100 | 97 | (with-value [_ v]
|
101 | 98 | (condp = field
|
102 | 99 | ChronoField/OFFSET_SECONDS (ZoneOffset/ofTotalSeconds v))))
|
103 | 100 |
|
104 | 101 | (alter-meta! #'->ZoneOffsetFieldProperty assoc :private true)
|
105 |
| -(alter-meta! #'map->ZoneOffsetFieldProperty assoc :private true) |
106 | 102 |
|
107 |
| -(defrecord TemporalFieldProperty [^Temporal o, ^TemporalField field] |
| 103 | +(deftype TemporalFieldProperty [^Temporal o, ^TemporalField field] |
108 | 104 | jt.c/WritableProperty
|
109 | 105 | (with-value [_ v] (.with o field v)))
|
110 | 106 |
|
111 | 107 | (alter-meta! #'->TemporalFieldProperty assoc :private true)
|
112 |
| -(alter-meta! #'map->TemporalFieldProperty assoc :private true) |
113 | 108 |
|
114 | 109 | (defmacro field-property [java-type has-range?]
|
115 | 110 | (let [java-type-arg (with-meta (gensym) {:tag java-type})]
|
|
204 | 199 |
|
205 | 200 | ;;;;;;;;; AMOUNT
|
206 | 201 |
|
207 |
| -(defrecord TemporalAmountUnitProperty [^TemporalAmount ta, ^TemporalUnit unit] |
| 202 | +(deftype TemporalAmountUnitProperty [^TemporalAmount ta, ^TemporalUnit unit] |
208 | 203 | jt.c/ReadableProperty
|
209 | 204 | (value [_]
|
210 | 205 | (.get ta unit)))
|
211 | 206 |
|
212 | 207 | (alter-meta! #'->TemporalAmountUnitProperty assoc :private true)
|
213 |
| -(alter-meta! #'map->TemporalAmountUnitProperty assoc :private true) |
214 | 208 |
|
215 |
| -(defrecord PeriodUnitProperty [^Period p, unit-key] |
| 209 | +(deftype PeriodUnitProperty [^Period p, unit-key] |
216 | 210 | jt.c/ReadableProperty
|
217 | 211 | (value [_]
|
218 | 212 | (case unit-key
|
|
228 | 222 | :days (.withDays p v))))
|
229 | 223 |
|
230 | 224 | (alter-meta! #'->PeriodUnitProperty assoc :private true)
|
231 |
| -(alter-meta! #'map->PeriodUnitProperty assoc :private true) |
232 | 225 |
|
233 |
| -(defrecord DurationUnitProperty [^Duration d, unit-key] |
| 226 | +(deftype DurationUnitProperty [^Duration d, unit-key] |
234 | 227 | jt.c/ReadableProperty
|
235 | 228 | (value [_]
|
236 | 229 | (case unit-key
|
|
244 | 237 | :nanos (.withNanos d v))))
|
245 | 238 |
|
246 | 239 | (alter-meta! #'->DurationUnitProperty assoc :private true)
|
247 |
| -(alter-meta! #'map->DurationUnitProperty assoc :private true) |
248 | 240 |
|
249 | 241 | (def default-unit-property-factory
|
250 | 242 | (reify PropertyFactory
|
|
0 commit comments