Eu quero converter a árvore escrita no .org
arquivo para algum código XML para gerar a árvore gráfica dele mais tarde (por exemplo, carregá-lo na página www.draw.io ).
Para fazer isso, preciso de um script bash que converterá .org
o arquivo contendo:
* tree_root
** root_node_1
*** subnode
** root_node_2
para .xml
arquivo contendo:
<mxCell id="b1" value="tree_root" > </mxCell>
<mxCell id="b2" value="root_node_1" ></mxCell>
<mxCell id="a1" source="b2" target="b1">
<mxCell id="b3" value="subnode" ></mxCell>
<mxCell id="a2" source="b3" target="b2">
<mxCell id="b4" value="root_node_2" ></mxCell>
<mxCell id="a3" source="b4" target="b1">
No modo org, os títulos são indicados por asteriscos ( *
- título de primeiro nível, **
- título de segundo nível, etc.)
Explicação :
- Os campos chamados
id
são nomes exibidos nas caixas. - b1, b2, b3 significam "caixa", nomes enumerados pelo número da linha no
.org
arquivo, - a1, a2, a3 significam "seta" são os nomes enumerados por números naturais subsequentes,
source
éid
onde a seta começa,target
éid
para onde as setas apontam.
Eu preciso de um caso simples, por exemplo, 6 níveis de profundidade max. Vou estendê-lo eu mesmo, mas preciso de algo para começar.
Como fazer isso?
Talvez isso atenda às suas necessidades? A idéia básica é ter um array (chamado labels) que contém o que é efetivamente o número da linha da última linha começando com um determinado número de estrelas. Ele produzirá o gráfico errado se você aumentar o número de estrelas em mais de uma, mas lidar com as diminuições de qualquer número corretamente. É claro que ele não lida com texto sob os títulos.