Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@devn
Created December 1, 2022 22:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save devn/b907b0597662246d7073ed7906b17461 to your computer and use it in GitHub Desktop.
Save devn/b907b0597662246d7073ed7906b17461 to your computer and use it in GitHub Desktop.
race car go vroom
(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