Estou escrevendo um pacote que carrega uma lista de curandeiros, conteúdos e algumas outras propriedades, que devem ser exibidas ao usuário. No momento, um org-mode
buffer parece ser uma boa maneira de exibir essas manchetes.
Abaixo está um exemplo de como essa lista pode ser estruturada. É meramente ilustrativo, posso convertê-lo facilmente para qualquer outra estrutura, conforme necessário.
'(("One headline" "Some much longer content."
(property1 . value)
(property2 . value))
("Second headline" "More much longer content."
(property1 . value)
(property2 . value)))
Existe uma função ou pacote que imprime essa lista em um org-mode
buffer?
Aqui está a saída desejada.
* One headline
:PROPERTIES:
:property1: value
:property2: value
:END:
Some much longer content.
* Second headline
:PROPERTIES:
:property1: value
:property2: value
:END:
More much longer content.
Eu poderia fazer isso manualmente, só estou me perguntando se pode haver algo lá fora.
org-insert-drawer
. (Ou seja, eu imagino se tal conversor existia, esta função chamaria que um comnil
.)Respostas:
Este é o trabalho de
org-element
, o incrível (!) Trabalho de Nicolas Goaziou . Se você não conheceorg-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 poderosaorg
. Mais notavelmente oorg-export
(ox
), mas também funciona em por exemploorg.el
.Para obter a "representação lisp" de um elemento em point use
org-element-at-point
ouorg-element-context
. Para obter a representação do buffer, useorg-element-parse-buffer
. Embora não seja diretamente relevante aqui, esteja cienteorg-element-map
.Para ir da "representação lisp" de um
element
,secondary string
ouparse tree
de volta para a "Org sintaxe representação" usoorg-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ítuloSe você precisar adicionar os dois títulos, adicione um
parse tree
Você pode achar que a biblioteca de Thorsten Jolitz o
org-dp
ajudará em tais esforços ( no MELPA ).Uma descrição mais completa de Thorsten pode ser encontrada aqui .
Para mais esclarecimentos
gmane.emacs.orgmode
é realmente o fórum apropriado.fonte
org-dp
é uma interface alternativa. AFAIR, foi escrito para criar documentos no formato / sintaxe da Org a partir de um ponto de vista "básico". O objetivo do elemento organizacional é ser um analisador e um cavalo de batalha para a organização. Pessoalmente, estou bemorg-element
, mas é ótimo ter interfaces alternativas.Eu meio que olhei tangencialmente para esse problema. Dê uma olhada no org-protocol.el . É fornecido com o modo organizacional. Especificamente, a função org-protocol-do-capture converte uma lista, "partes" (que você parece já ter), em propriedades do modo org usando a função org-store-link-props e depois chama a captura org. Isso pressupõe que você tenha um modelo de captura com espaços reservados, como%: link. Você pode definir as propriedades para o que quiser.
Fiz algo semelhante a raspar título, autor, data, fonte etc. das APIs do site. Se você acabar vendo esse código, verifique também o capture-templates.el.
Se você estiver trabalhando com dados JSON, o json.el e / ou request.el pode ser útil.
fonte