An Org Mode parser for Dart.


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.


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

    foo bar
  • 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

    foo bar
  • Footnotes

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

  • 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\)
    \nabla \times \mathbf{B} = \frac{1}{c}\left( 4\pi\mathbf{J} + \frac{\partial \mathbf{E}}{\partial t}\right)
  • Entities

    a\leftrightarrow{}b conversion