binaryage / binaryage/cljs-devtools
Feature: String with metadata mode
- Lingua principale
- Clojure
- Stelle
- 1.1k
- Fork
- 51
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
This is a feature idea.
I'm looking for a way to make my js/console.log display cleanly with and without cljs-devtools installed.
## Motivating example
Today's job is a react native app. It's not always convenient to turn cljs-devtools on (e.g. two simulators) and it's helpful to look in the simulator logs sometimes (no cljs-devtool rendering).
## Problems
* js/console.log with regular clojure data types produces verbose/unreadable strings.
* logging (serializing) large data structures can cause UX lag
## Idea
Perhaps cljs-devtools could be adapted to look for metadata associated with a string (or string like) object.
Vaguely something like this could be used to prepare a "console.log friendly string" with some other protocol which cljs-devtools could detect...
```cljs
(defn data-str [data]
(binding [*print-level* 3 *print-length* 5]
(specify! (pr-str data) IMeta (-meta [_] data)))))
(js/console.log (data-str {:a 1 :b (range 1000)}))
```
NOTE: this code doesn't work
Goal is to cover two cases
* String form will work in all situations and not take too long to serialize.
* If cljs-devtools is installed you can drill into metadata.
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Valutazione
Questa issue non è ancora stata valutata.