MiniDocs es un conjunto de herramientas “minimalistas” para publicar y compartir documentación escrita desde Lepiter.
En los enfoques de procesadores de palabras populares (MS Word, Libre Office Writer, etc) un programa pesado (de centenares de megas o gigas) usa un formato pesado y engorroso para humanos (XML) para labores de documentación. En contraste, MiniDocs se enfoca en lenguajes de etiquetamiento ligero, como Markdown, Markdeep y la navaja suiza de tales lenguajes ligeros, Pandoc, que pueden ser escritos desde centenares de procesadores de texto y palabra, con mínimos requerimientos de hardware, en diversidad de dispositivos (teléfonos, tabletas, computadores de escritorio) y con una notación amigable para escritura y lectura por humanos. La intensión es hacer de tales lenguajes/formatos ligeros, la manera de compartir y publicar documentos creados desde Lepiter.
Este documento está publicado usando MiniDocs.
MiniDocs incorpora a Lepiter (2021) las lecciones aprendidas de Grafoscopio 1 (2015), en las que complejos documentos tipo libros, como el Manual de Grafoscopio (2016), el Manual de Periodismo de Datos (2018), el libro de Feminismo de Datos (2019a) o la Documentatón (2019b), eran almacenados por completo en sencillos formatos de texto enriquecidos vía STON. También hemos agregado algunas ideas de diseño de micrositios y documentación en línea provenientes de IndieWeb con Brea (2020). Para las libretas interactivas en Grafoscopio, usamos STON como un formato donde embebíamos trozos de Markdown y de Pharo. Le hemos dado la vuelta a esa idea, generando ahora lenguajes ligeros de documentación enriquecidos con trocitos de metadatos en STON. Veamoslo en detalle.
Markdown y Markdeep son formatos ligeros para la
escritura y publicación de documentación. En mutabiT los hemos extendido
para que permita también compartir rápidamente versiones web
de las notas interactivas escritas Lepiter. Para ello,
esencialmente hemos colocados un conjunto de metadatos
alrededor de los trozos de texto exportado desde Lepiter,
con información que permiten reimportarlos de vuelta. Dichos
metadatos están contenidos en etiquetas div
de
HTML con lo cual no se pierde la compatibilidad con
Markdeep/Markdown, ni se crea una variante nueva de tales
lenguajes (esfuerzos como CommonMark surgieron para
armonizar tal eclosión de variantes).
Combinando metadatos y formatos ligeros para compartir y publicar información, nos dotamos de un conjunto de ventajas, que los enfoques populares basados en XML y JSON no tienen:
Si revisas el código fuente de documento podrás apreciar cómo lucen nuestro formato ligero enriquecido y experimentar de primera mano tales ventajas.
Hemos agregado otras configuraciones extra, que permiten
a Pharo/Lepiter usar cabeceras y hojas de estilo
personalizadas y, en general, controlar el proceso de
exportación desde el entorno de Pharo (llamado la imagen)
hacia el sistema de archivos. Para el caso de Markdeep,
dichas configuraciones están en la variable
config
del objeto Markdeep
y son
adicionales a las opciones de
Markdeep, que también soportamos, para controlar sus
documentos (pues configuran aspectos extra). Para el caso de
Markdown, hemos usado las cabeceras
de metadatos en YAML, que son donde habitualmente Pandoc
controla la exportación del documento.
Primero se instala ExoRepo y luego se ejecuta:
ExoRepo new
repository: 'https://code.tupale.co/Offray/MiniDocs';
load.
MiniDocs also provides Nano ID preliminary support to uniquely ID the documents. This is done via an external Nim’s programming language implementation of Nano ID, which allow us to reuse it with extreme portability without reimplementing it natively in Pharo. To see and compile the source code for the Nano ID run:
NanoID scriptSourceCode fullName
NanoID binaryFile
NanoID install
NanoID generate
Nimble version
Para probar la exportación de páginas:
pruebas := LePage new title: 'Pruebas exportación'.
OSSUnixSubprocess new
command: 'pandoc' ;
arguments: { pruebas markdownFileName. '-o'. pruebas htmlFileName};
workingDirectory: pruebas storage fullName;
runAndWaitOnExitDo: [ :process :outString | pruebas storage / pruebas htmlFileName].
Estas son algunas ideas en borrador. No deberían considerarse como documentos orientados al lector, sino ayudas de memoria al autor.
Algunas convenciones para procesar bloques podrían ayudar a las conversiones desde Lepiter a Markdeep/Markdown:
Item 1
Item 2
Item 3: Nótese que esto quizás requiera incorporar en los metadatos información sobre el tipo de etiqueta ad-hoc, para recuperarla cuando se importe la libreta
~~~ Lua linenumbers print (“Esto debería aparecer con fuente de código ~~~
[Ejemplo [lua]: Ejemplos de código embebido.
De hecho, MiniDocs reempaqueta y modulariza funcionalidad relacionada con lenguajes de etiquetamiento ligero, que anteriormente estaba en el paquete GrafoscopioUtils .