Este é o trabalho de org-element
, o incrível (!) Trabalho de Nicolas Goaziou . Se você não conhece org-element
e se preocupa com o desenvolvimento organizacional, isso é algo que você deve analisar. Não é apenas uma ótima ferramenta para se trabalhar, mas também é cada vez mais poderosa org
. Mais notavelmente o org-export
( ox
), mas também funciona em por exemplo org.el
.
Para obter a "representação lisp" de um elemento em point use org-element-at-point
ou org-element-context
. Para obter a representação do buffer, use org-element-parse-buffer
. Embora não seja diretamente relevante aqui, esteja ciente org-element-map
.
Para ir da "representação lisp" de um element
, secondary string
ou parse tree
de volta para a "Org sintaxe representação" uso org-element-interpret-data
. Essa é a (única) maneira de transformar uma "representação de lisp" em uma "representação de sintaxe da organização". Você provavelmente não desejará escrever essa representação manualmente, no entanto. Aqui está uma representação bem pequena do seu primeiro título
(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 você precisar adicionar os dois títulos, adicione um 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.")))))
Você pode achar que a biblioteca de Thorsten Jolitz o org-dp
ajudará em tais esforços ( no MELPA ).
A biblioteca org-dp
é destinada à programação em nível local, ou seja, sem nenhuma informação (contextual), exceto aquelas sobre o elemento analisado no momento. Ele foi projetado para tornar o uso da estrutura de analisador / intérprete de organização no nível local o mais conveniente possível no nível global (com uma árvore de análise completa produzida por
org-element-parse-buffer
disponível)
Uma descrição mais completa de Thorsten pode ser encontrada aqui .
Para mais esclarecimentos gmane.emacs.orgmode
é realmente o fórum apropriado.
org-insert-drawer
. (Ou seja, eu imagino se tal conversor existia, esta função chamaria que um comnil
.)