This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2020-05-03
Channels
- # aleph (6)
- # announcements (4)
- # babashka (73)
- # beginners (117)
- # calva (25)
- # chlorine-clover (59)
- # cider (21)
- # clara (3)
- # cljdoc (8)
- # cljs-dev (54)
- # cljsrn (15)
- # clojure (65)
- # clojure-france (5)
- # clojure-spec (3)
- # clojure-uk (13)
- # clojurescript (79)
- # conf-proposals (1)
- # conjure (17)
- # core-logic (11)
- # datomic (21)
- # fulcro (82)
- # graalvm (11)
- # helix (7)
- # jobs-discuss (11)
- # joker (2)
- # juxt (3)
- # local-first-clojure (1)
- # luminus (5)
- # nrepl (61)
- # off-topic (12)
- # pathom (70)
- # re-frame (3)
- # reitit (3)
- # rum (1)
- # shadow-cljs (58)
- # sql (1)
- # tools-deps (26)
- # xtdb (3)
got something going :
(deftype DateHandler []
Object
(tag [_ v] "time/date")
(rep [_ v] (with-out-str (print v)))
(stringRep [_ v] nil))
(def date-reader (t/reader :json {:handlers {"time/date" #(cljs.reader/read-string %)}}))
(def date-writer (t/writer :json {:handlers {tutil/Date (DateHandler.)}}))
(t/read date-reader (t/write date-writer (ti/today)))
(def Date (type (t/date)))
(def DateTime (type (t/date-time)))
(def Time (type (t/time)))
(def Period (type (t/new-period 1 :days)))
(def Duration (type (t/new-duration 1 :seconds)))
(def Instant (type (t/instant)))
(deftype TickHandler []
Object
(tag [_ v] "time/tick")
(rep [_ v] (with-out-str (print v)))
(stringRep [_ v] nil))
(def tick-handler (TickHandler.))
(def tick-handler-map
(into {}
(map #(vector (first %) (second %))
(partition 2
(interleave
[Date DateTime Time Period Duration Instant]
(repeat tick-handler))))))
this is working for the clojurescript sidegot round trip working 😄
(:require
#?(:cljs [cljs.reader]
:clj [clojure.edn])
[time-literals.read-write :as rw]
[cognitect.transit :as tr]
[tick.alpha.api :as t])
(def transit-tag "time/tick")
#?(:cljs (deftype TickHandler []
Object
(tag [_ v] transit-tag)
(rep [_ v] (with-out-str (pr v)))
(stringRep [_ v] nil)))
(def tick-transit-write-handler
#?(:cljs (TickHandler.)
:clj (tr/write-handler
transit-tag
(fn [v] (with-out-str (pr v))))))
(def tick-transit-writer-handler-map
(reduce
(fn [m [k v]] (assoc m k v))
{}
(partition 2
(interleave
[Date DateTime Time Period Duration Instant]
(repeat tick-transit-write-handler)))))
(def tick-transit-reader
{transit-tag
#?(:cljs cljs.reader/read-string
:clj (tr/read-handler #(clojure.edn/read-string {:readers rw/tags} %)))})
🎉 4