Uniorg est un analyseur précis en mode org compatible avec l'écosystème unifié.
Je veux publier mon cerveau de notes en mode org. Aucun des analyseurs que j'ai essayés n'a fourni suffisamment de précision.
Uniorg s'efforce de l'analyse de la précision plutôt que de la vitesse ou de la facilité d'écriture de l'analyseur.
Uniorg suit l'ORG Syntaxe et API de l'élément org. Il s'inspire fortement d'Org-element.el, ce qui signifie que Uniorg voit les fichiers org de la même manière que le mode org. Le code est plein de regex, mais c'est exactement ainsi que les fichiers analyses en mode org.
Cependant, il y a quelques écarts intentionnels par rapport au mode org qui rendent Uniorg plus agréable ou plus facile à travailler.
Uniorg analyse avec succès la majeure partie de la syntaxe org. Cependant, il y a quelques endroits où je n'ai pas encore terminé:
Le reste de la syntaxe doit fonctionner correctement et exactement de la même manière que dans EMACS (y compris la nidification de la liste complexe, les liens, les tiroirs, les entrées d'horloge, le latex, etc.). Si vous souhaitez aider avec les articles ci-dessus, Grep Parser.ts pour TODO: .
Ce référentiel contient les packages suivants:
uniorg - Définitions de typescript de l'arbre de syntaxe Uniorguniorg-parse - Fichiers de mode Parse Org aux arbres de syntaxe Uniorguniorg-stringify - Stringify Uniorg Syntax Tree to Org-Mode Stringuniorg-rehype - Transformer les arbres de syntaxe Uniorg en se réhypèreuniorg-extract-keywords - Stockez les mots clés en mode org à VFileuniorg-attach - Convertir attachment: liens en file: liensuniorg-slug - Ajoutez des ancres aux titres à l'aide de l'algorithme de GitHuborgast-util-to-string - utilitaire pour obtenir le contenu en texte brut d'un nœudorgast-util-visit-ids - Utilité pour visiter tous les nœuds d'organisation avec IDSUniorg est compatible avec l'écosystème unifié, vous pouvez donc profiter de nombreux plugins existants.
Par exemple, voici comment vous transformez un mode org en 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 ) ) ;Plugins for Code Syntax Highlight (Rehype-Highlight, @ Mapbox / Rehype-Prism) et Latex-formatting (Rehype-Katex, Rehype-Mathjax) devrait fonctionner hors de la boîte:
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 ) ) ;Licence publique générale GNU V3.0 ou version ultérieure