O Uniorg é um analisador de modo de organização preciso compatível com o ecossistema unificado.
Quero publicar meu Braaddump a partir de notas no modo de organização. Nenhum dos analisadores que eu tentei proporcionou precisão suficiente.
O Uniorg se esforça para analisar a precisão, em vez de velocidade ou facilidade de escrever o analisador.
O Uniorg segue a sintaxe da org e a API do elemento org. Ele se baseia fortemente do org-element.el, o que significa que o Uniorg vê arquivos da Org da mesma maneira que o modo de organização. O código está cheio de regexes, mas é exatamente assim que os arquivos da organização analisa os arquivos.
No entanto, existem alguns desvios intencionais do modo de organização que tornam o Uniorg mais agradável ou mais fácil de trabalhar.
O Uniorg analisa com sucesso a maior parte da sintaxe da organização. No entanto, há alguns lugares que ainda não terminei:
O restante da sintaxe deve funcionar bem e exatamente da mesma maneira que em EMACS (incluindo nidificação de listas complexas, links, gavetas, entradas de relógio, látex etc.). Se você quiser ajudar com os itens acima, Grep Parser.ts para TODO: .
Este repositório contém os seguintes pacotes:
uniorg - Definições TypeScript de Sintaxe Uniorguniorg-parse -Analisar arquivos de modo de organização para árvores de sintaxe uniorguniorg-stringify -stringify uniorg sintaxe árvore para string de modo de organizaçãouniorg-rehype -Transforme árvores de sintaxe uniorg em reabastecimentouniorg-extract-keywords -armazenar palavras-chave Org-Mode para VFILuniorg-attach -converter attachment: links para file: linksuniorg-slug -Adicione âncoras aos títulos usando o algoritmo do GitHuborgast-util-to-string -utilidade para obter o conteúdo de texto sem formatação de um nóorgast-util-visit-ids -Utilitário para visitar todos os nós da Org com IDsO Uniorg é compatível com o ecossistema unificado, para que você possa aproveitar muitos plugins existentes.
Por exemplo, veja como você transforma um modo de organização em HTML.
import { unified } from 'unified' ;
import parse from 'uniorg-parse' ;
import uniorg2rehype from 'uniorg-rehype' ;
import stringify from 'rehype-stringify' ;
const processor = unified ( ) . use ( parse ) . use ( uniorg2rehype ) . use ( stringify ) ;
processor
. process ( `* org-mode examplen your text goes here` )
. then ( ( file ) => console . log ( file . value ) ) ;Os plugins para o Code Syntax Destact (reheme-highlight, @mapbox/rehype-prism) e formatação de látex (rehype-katex, rehype-mathjax) devem funcionar fora da caixa:
import { unified } from 'unified' ;
import parse from 'uniorg-parse' ;
import uniorg2rehype from 'uniorg-rehype' ;
import highlight from 'rehype-highlight' ;
import katex from 'rehype-katex' ;
import stringify from 'rehype-stringify' ;
const processor = unified ( )
. use ( parse )
. use ( uniorg2rehype )
. use ( highlight )
. use ( katex )
. use ( stringify ) ;
processor
. process (
`* org-mode example
When $a ne 0$, there are two solutions to (ax^2 + bx + c = 0) and they are
$$x = {-b pm sqrt{b^2-4ac} over 2a}.$$
#+begin_src js
console.log('uniorg is cool!');
#+end_src
`
)
. then ( ( file ) => console . log ( file . value ) ) ;GNU Licença pública geral v3.0 ou mais tarde