Estoy escribiendo un paquete que descarga una lista de líneas, contenidos y algunas otras propiedades, que se mostrarán al usuario. Por el momento, un org-mode
búfer parece una buena forma de mostrar estos titulares.
A continuación se muestra un ejemplo de cómo podría estructurarse esta lista. Es meramente ilustrativo, puedo convertirlo fácilmente a cualquier otra estructura según sea necesario.
'(("One headline" "Some much longer content."
(property1 . value)
(property2 . value))
("Second headline" "More much longer content."
(property1 . value)
(property2 . value)))
¿Existe una función o paquete que imprima dicha lista en un org-mode
búfer?
Aquí está la salida deseada.
* One headline
:PROPERTIES:
:property1: value
:property2: value
:END:
Some much longer content.
* Second headline
:PROPERTIES:
:property1: value
:property2: value
:END:
More much longer content.
Podría hacer esto manualmente, me pregunto si podría haber algo por ahí.
org-insert-drawer
. (Es decir, me imagino que si existiera un convertidor de este tipo, esta función llamaría a ese connil
).Respuestas:
Este es el trabajo de
org-element
la impresionante (!) Obra de Nicolás Goaziou . Si no sabeorg-element
y le importa el desarrollo de la organización, esto es algo que debe considerar. No solo es una gran herramienta para trabajar, también es cada vez más potenteorg
. Lo más notable es elorg-export
(ox
), pero también funciona en, por ejemploorg.el
.Para obtener la "representación lisp" de un elemento bajo punto, use
org-element-at-point
oorg-element-context
. Para obtener la representación del uso del búferorg-element-parse-buffer
. Si bien no es directamente relevante aquí, tenga en cuentaorg-element-map
.Para ir desde la "representación lisp" de un
element
,secondary string
oparse tree
volver a la "representación de sintaxis Org", useorg-element-interpret-data
. Esta es la (única) forma de convertir una "representación lisp" en una "representación de sintaxis Org". Sin embargo, es probable que no desee escribir esta representación manualmente. Aquí hay una pequeña representación de tu primer titularSi debe agregar ambos titulares, agregue un
parse tree
Puede encontrar que la biblioteca de Thorsten Jolitz
org-dp
lo ayudará en tales esfuerzos ( en MELPA ).Una descripción más completa de Thorsten se puede encontrar aquí .
Para más aclaraciones
gmane.emacs.orgmode
es realmente el foro apropiado.fuente
org-dp
Es una interfaz alternativa. AFAIR, fue escrito para crear documentos en la sintaxis / formato Org desde un punto de vista "elementy". El objetivo de Org Element es ser un analizador y un caballo de batalla para Org. Personalmente estoy de acuerdoorg-element
, pero es genial tener interfaces alternativas.He visto este problema de forma tangencial. Echa un vistazo a org-protocol.el . Se incluye con el modo org. Específicamente, la función org-protocol-do-capture convierte una lista, "partes" (que parece que ya tiene), en propiedades de modo org mediante la función org-store-link-props y luego llama a org-capture. Esto supone que tiene una plantilla de captura con marcadores de posición como%: enlace. Puede definir las propiedades para que sean lo que quiera.
He hecho algo similar al título de raspado, autor, fecha, fuente, etc. de las API del sitio. Si termina mirando este código, asegúrese de mirar también capture-templates.el.
Si está trabajando con datos JSON, json.el y / o request.el pueden ser útiles.
fuente