Questo è il lavoro di org-element
, il fantastico (!) Lavoro di Nicolas Goaziou . Se non lo sai org-element
e ti interessa lo sviluppo dell'org questo è qualcosa che dovresti esaminare. Non è solo un ottimo strumento con cui lavorare, ma è anche sempre più potente org
. In particolare il org-export
( ox
), ma funziona anche in eg org.el
.
Per ottenere la "rappresentazione lisp" di un elemento sotto punto usare org-element-at-point
o org-element-context
. Per ottenere la rappresentazione del buffer utilizzare org-element-parse-buffer
. Sebbene non sia direttamente pertinente qui, tieni presente org-element-map
.
Per passare dalla "rappresentazione lisp" di un element
, secondary string
o parse tree
tornare alla "rappresentazione della sintassi dell'organizzazione" usare org-element-interpret-data
. Questo è il (solo) modo per trasformare una "rappresentazione Lisp" in un "Org sintassi di rappresentanza". Tuttavia, probabilmente non vorrai scrivere questa rappresentazione manualmente. Ecco una rappresentazione piuttosto piccola del tuo primo titolo
(org-element-interpret-data
'(headline (:title "One headline" :level 1)
(property-drawer nil ((node-property (:key "property1" :value "value1"))
(node-property (:key "property2" :value "value2"))))
(#("Some much longer content."))))
Se devi aggiungere entrambi i titoli aggiungi a parse tree
(org-element-interpret-data
'(org-data nil (headline (:title "One headline" :level 1)
(property-drawer nil ((node-property (:key "property1" :value "value1"))
(node-property (:key "property2" :value "value2"))))
(#("Some much longer content.")))
(headline (:title "Second headline" :level 1)
(property-drawer nil ((node-property (:key "property1" :value "value1"))
(node-property (:key "property2" :value "value2"))))
(#("More much longer content.")))))
Potresti scoprire che la biblioteca di Thorsten Jolitzorg-dp
ti aiuterà in tali sforzi ( su MELPA ).
La libreria org-dp
è pensata per la programmazione a livello locale, cioè senza alcuna informazione (contestuale) eccetto quelle sull'elemento analizzato al punto. È progettato per rendere l'utilizzo del framework parser / interprete Org a livello locale conveniente come usarlo a livello globale (con un albero di analisi completo prodotto da
org-element-parse-buffer
disponibile)
Una descrizione più completa di Thorsten può essere trovata qui .
Per ulteriori chiarimenti gmane.emacs.orgmode
è davvero il forum appropriato.
org-insert-drawer
. (Cioè, immagino che se esistesse un tale convertitore, questa funzione chiamerebbe quella connil
.)