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