Estoy de acuerdo con @uvtc en que el descuento es una buena opción. Como apéndice, me gustaría señalar que es trivial generar su propia función de visualización de doc para uso en REPL. El siguiente código supone que tiene el paquete markdown-clj en su classpath (p.a través de las dependencias dev), y están utilizando un REPL en OSX:
(ns docs
(:require [clojure.java.shell :as s]
[markdown.core :as md]))
(defmacro opendoc [name]
`(do
(md/md-to-html (java.io.StringReader. (:doc (meta (var ~name)))) "/tmp/doc.html")
(s/sh "open" "/tmp/doc.html")
)
)
Es posible que desee mirar a la fuente de clojure.repl/doc para manejar casos especiales (por ejemplo, esto se supone que va a estar pasando en una símbolo apropiado para una var). También podría ser bueno tener el nombre de archivo reflejando el nombre/nombre de la función para el "almacenamiento en caché", en lugar de simplemente reutilizar el mismo nombre de archivo para cada solicitud ... pero lo mantengo simple para fines ilustrativos.
El comando OSX open
simplemente le pide al sistema operativo que abra un archivo al detectar su tipo. Por lo tanto:
REPL=> (docs/opendoc my.ns/f)
hará que su navegador predeterminado abra la versión HTMLified de la cadena de documentos de su función.
Otra advertencia: si sangra su cadena multilínea (lo que suelen hacer los editores), entonces su MD puede terminar con rarezas (por ejemplo, las listas de viñetas pueden anidar de una manera que no pretenden). Una forma de resolver esto es recortarlo. Por ejemplo:
(defn boo
"
# Title
My thing
* Item one
* Item two
"
[args] ...)
y luego modificar la función opendoc aplicar primero un ajuste izquierda:
(defn ltrim [str] (clojure.string/replace str #"(?m)^ {0,3}" ""))
(defmacro opendoc [name]
`(do
(md/md-to-html (java.io.StringReader. (ltrim (:doc (meta (var ~name))))) "/tmp/doc.html")
(s/sh "open" "/tmp/doc.html")
)
)
creo que la solución a este depende en gran medida de su capacidad para configurar (o aumentar) el editor de formato las cadenas de documentos para ti, ya sea que escribas o cuando lo solicites. – Jeremy
Hay otras convenciones de docstring que podrían/deberían formalizarse también en mi humilde opinión. from let -> '' (let bindings & body) bindings => binding-form init-expr'' – sw1nn