Giter VIP home page Giter VIP logo

Comments (3)

devurandom avatar devurandom commented on August 15, 2024

I looked at

(defn print-form [form]
(with-bindings
(cond-> {#'*print-meta* true
#'*print-length* nil
#'*print-level* nil}
(resolve '*print-namespace-maps*)
(assoc (resolve '*print-namespace-maps*) false))
(cond
(string? form) (println form)
:else (println (pr-str (walk/postwalk
(fn [v]
(if (meta v)
(if (symbol? v)
(vary-meta v #(not-empty
(cond-> (sorted-map)
(some? (:tag %)) (assoc :tag (:tag %))
(some? (:doc %)) (assoc :doc (:doc %))
((some-fn true? string?) (:deprecated %)) (assoc :deprecated (:deprecated %))
(string? (:superseded-by %)) (assoc :superseded-by (:superseded-by %))
(string? (:supercedes %)) (assoc :supercedes (:supercedes %))
(some? (:arglists %)) (assoc :arglists (list 'quote (doall (map normalize-argv (:arglists %))))))))
(with-meta v nil))
v))
form)))))
nil)
and after some experimentation on the REPL I believe this might work:

(deftype DocString [value])

(defmethod print-method DocString
 [^DocString this ^Writer w]
 (.write w (str "\"" (.-value this) "\"")))

With this, the following code (modelled after java-time.dev.gen/print-form):

(with-bindings {#'*print-meta* true}
 (println (pr-str (with-meta {:value "X"} {:doc (DocString. "multi\nline\nstring")}))))

prints:

^{:doc "multi
line
string"} {:value "X"}

from clojure.java-time.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.