Skip to content

amake/org_parser

Repository files navigation

org_parser

An Org Mode parser for Dart.

Usage

For displaying Org Mode documents in Flutter applications, see org_flutter. For an example application that displays Org Mode documents with org_parser and org_flutter, see Orgro.

This package allows you to parse raw Org Mode documents into a structured in-memory representation.

import 'package:org_parser/org_parser.dart';

final doc = OrgDocument.parse('''* TODO [#A] foo bar
baz buzz''');
print(doc.children[0].headline.keyword); // TODO

See the example for more.

Caveats

This parser was developed for an application that is halfway between pretty-printing and evaluating/interpreting, so in many cases the parsed structure does not split out constituent parts as thoroughly as needed for some applications.

Supported syntax

  • Sections/headlines

    * TODO [#A] foo bar
    
  • Blocks

    #+BEGIN_SRC
    foo bar
    #+END_SRC
    
  • Affiliated keywords

    #+name: foo
    
  • Fixed-width areas

    : foo bar
    : baz buzz
    
  • Tables

    | foo | bar |
    |-----+-----|
    | biz | baz |
    
  • Lists

    - foo
      - [X] bar
        1. baz
        2. buzz
    
  • Drawers

    :PROPERTIES:
    foo bar
    :END:
    
  • Footnotes

    Foo bar[fn:1] biz buzz
    
    [fn:1] Bazinga
    
  • Links

    [[http://example.com][example]]
    
    http://example.com
    
  • Emphasis markup

    *bold* /italic/ _underline_ +strikethrough+ ~code~ =verbatim=
    
  • Timestamps

    [2020-05-05 Tue]
    
    <2020-05-05 Tue 10:00>
    
  • Macro references

    {{{kbd(C-c C-c)}}}
    
  • LaTeX fragments

    Then we add $a^2$ to \(b^2\)
    
    \begin{equation}
    \nabla \times \mathbf{B} = \frac{1}{c}\left( 4\pi\mathbf{J} + \frac{\partial \mathbf{E}}{\partial t}\right)
    \end{equation}
    
  • Entities

    a\leftrightarrow{}b conversion
    
  • Citations

    [cite:@key]
    
  • Horizontal rules

    -----
    
  • Radio targets

    <<<foo>>>
    
  • Link targets

    <<bar>>