• Stars
    star
    586
  • Rank 76,279 (Top 2 %)
  • Language
    Clojure
  • License
    MIT License
  • Created almost 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Read Eval Visualize Loop for Clojure

logo Reveal: Read Eval Visualize Loop for Clojure

demo

Clojars Project Slack Channel

Rationale

Repl is a great window into a running program, but the textual nature of its output limits developer's ability to inspect the program: a text is not an object, and we are dealing with objects in the VM.

Reveal aims to solve this problem by creating an in-process repl output pane that makes inspecting values as easy as selecting an interesting datum. It recognizes the value of text as a universal interface, that's why its output looks like a text: you can select it, copy it, save it into a file. Unlike text, reveal output holds references to printed values, making inspecting selected value a matter of opening a context menu.

Unlike datafy/nav based tools, Reveal does not enforce a particular data representation for any given object, making it an open set β€” that includes datafy/nav as one of the available options. It does not use datafy/nav by default because in the absence of inter-process communication to datafy is to lose.

Not being limited to text, Reveal uses judicious syntax highlighting to aid in differentiating various objects: text java.lang.Integer looks differently depending on whether it was produced from a symbol or a class.

Reveal Pro

Reveal aims to be an extensible tool suitable for helping with development of any Clojure program. Reveal Pro provides a set of extensions that improve developer experience by providing more tools, so you can focus on your problem with data and knowledge you need, available as soon as you need it.

Documentation

You can find overview, setup instructions and more at vlaaad.github.io/reveal.

Versioning, stability, public and internal code

Reveal uses 1.MAJOR.REVISION versioning where:

  • 1 is a static prefix for compatibility with semantic versioning. Reveal should never introduce breaking changes, so if an update broke something, please file a bug report;
  • MAJOR is a number that is incremented when there are significant changes or improvements to Reveal;
  • REVISION is a commit number from the beginning of a history.

Reveal's compatibility promise applies to its public API: vlaaad.reveal ns, everything else is implementation detail that is subject to change. Reveal's UI and controls might change in the future.