File tree Expand file tree Collapse file tree 1 file changed +18
-6
lines changed Expand file tree Collapse file tree 1 file changed +18
-6
lines changed Original file line number Diff line number Diff line change 28
28
(= tag Tag/FLOAT) :float
29
29
:else :unknown ))
30
30
31
+ (defn fmt-tag-keyword [v]
32
+ (cond
33
+ (keyword? v) :keyword
34
+ (boolean? v) :boolean
35
+ (number? v) :key-integer
36
+ (instance? java.time.Instant v) :inst
37
+ (instance? java.util.Date v) :date
38
+ (coll? v) :coll
39
+ (string? v) :string ))
40
+
31
41
; ; map of logical tag -> string used as formatTag in the Bytes record.
32
42
(def fmt-tag-value
33
43
{:keyword " kw"
34
44
:boolean " bl"
35
45
:key-integer " ki"
36
46
:nil " nl" ; ; TODO: Could use Tag/NONE instead
37
47
:inst " in"
38
- :date " da" })
48
+ :date " da"
49
+ :coll " co"
50
+ :string " st" })
39
51
40
52
(def true-str " #t" )
41
53
(def false-str " #f" )
59
71
^bytes [^Database jdb v]
60
72
(if (nil? v)
61
73
(byte-array (-> jdb .md .getDigestLength))
62
- (let [digest (.md jdb)]
63
- ; ; add type name
64
- ( .update digest ( -> v .getClass .getCanonicalName ( .getBytes " UTF-8 " )))
65
- ; ; add null byte as separator
66
- (.update digest (byte-array 1 ))
74
+ (let [digest (.md jdb)
75
+ fmt-tag ( or ( some-> v fmt-tag-keyword fmt-tag-value)
76
+ ( throw ( ex-info ( str " Format tag not found for type: " ( type v)) {})))]
77
+ ; ; add format tag
78
+ (.update digest (.getBytes fmt-tag " UTF-8 " ))
67
79
; ; add the value
68
80
(cond
69
81
(validation/lazy-seq? v)
You can’t perform that action at this time.
0 commit comments