Created
December 1, 2022 22:03
-
-
Save devn/b907b0597662246d7073ed7906b17461 to your computer and use it in GitHub Desktop.
race car go vroom
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defn quick-pr-str | |
([data] | |
(let [acc (StringBuilder.)] | |
(quick-pr-str acc data) | |
(.toString acc))) | |
([^StringBuilder acc data] | |
(cond | |
(string? data) | |
(do | |
(.append acc \") | |
(.append acc ^String data) | |
(.append acc \")) | |
(map? data) | |
(do | |
(.append acc \{) | |
(doseq [^MapEntry kv data] | |
(quick-pr-str acc (.key kv)) | |
(.append acc \space) | |
(quick-pr-str acc (.val kv)) | |
(.append acc \space)) | |
(.append acc \})) | |
(vector? data) | |
(do | |
(.append acc \[) | |
(doseq [v data] | |
(quick-pr-str acc v) | |
(.append acc \space)) | |
(.append acc \])) | |
(set? data) | |
(do | |
(.append acc "#{") | |
(doseq [v data] | |
(quick-pr-str acc v) | |
(.append acc \space)) | |
(.append acc \})) | |
(seq? data) | |
(do | |
(.append acc \() | |
(doseq [v data] | |
(quick-pr-str acc v) | |
(.append acc \space)) | |
(.append acc \))) | |
(integer? data) | |
(.append acc ^Integer data) | |
(float? data) | |
(.append acc ^Float data) | |
(keyword? data) | |
(.append acc ^String (str data)) | |
:else | |
(.append acc data)))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment