UNIORG es un analizador de modo ORG preciso compatible con un ecosistema unificado.
Quiero publicar mi cerebro a partir de notas de modo org. Ninguno de los analizadores que probé ha proporcionado suficiente precisión.
Uniorg se esfuerza por analizar la precisión en lugar de la velocidad o la facilidad de escribir el analizador.
UNIORG sigue a Org Syntax y Org Element API. Se dibuja en gran medida de Org-Element.el, lo que significa UNIORG ve archivos de org de la misma manera que el modo org. El código está lleno de reglas, pero así es exactamente cómo los archivos analizados de modo ORG.
Sin embargo, hay un par de desviaciones intencionales del modo Org que hacen que uniReg sea más agradable o más fácil de trabajar.
UNIORG analiza con éxito la mayor parte de la sintaxis de org. Sin embargo, hay un par de lugares que aún no he terminado:
El resto de la sintaxis debe funcionar bien y exactamente de la misma manera que en los emacs (incluidos los anidados complejos de listas, enlaces, cajones, entradas de reloj, látex, etc.). Si desea ayudar con los artículos anteriores, Grep Parser.ts para TODO: .
Este repositorio contiene los siguientes paquetes:
uniorg - Definiciones mecanografiadas del árbol de sintaxis uniorguniorg-parse -PAREZA ARCHIVOS DE MODE DE ORG A LOS ÁRBOLES DE SINTAXA UNIORGuniorg-stringify : stringify uniorg sintaxe árbol a la cadena de modo orguniorg-rehype -transformar árboles de sintaxis uniorg para rehipouniorg-extract-keywords : almacene las palabras clave de modo de organización en vfileuniorg-attach -Convertir attachment: enlaces al file: enlacesuniorg-slug : agregue anclajes a los encabezados utilizando el algoritmo de GitHuborgast-util-to-string -Utilidad para obtener el contenido de texto sin formato de un nodoorgast-util-visit-ids -Utilidad para visitar todos los nodos de Org con IDSUNIORG es compatible con un ecosistema unificado, por lo que puede aprovechar muchos complementos existentes.
Por ejemplo, así es como transforma un modo de 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 ) ) ;Complementos para el resaltado de sintaxis del código (Rehype-Highlight, @mapbox/rehype-prism) y el formato de látex (rehype-katex, rehype-matathjax) debería funcionar fuera de la caja:
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 Licencia pública general v3.0 o posterior