A library for working with Org files. Specifically, this provides utilities for:
- Parsing Org text to an AST (Abstract Syntax Tree)
 - Regenerating Org text from an AST
 - Basic manipulation and analysis of an Org document AST
 - Generating basic representations Org content in the terminal, and a few other forms.
 
With the exception of some of the particularly fancy capabilities provided by
  org-mode (like Babel and Calc-based spreadsheeting), this project aims to
  exactly match the interpretation of Org mode markup — specifically the AST
  generated by org-element.el. This goal is not yet achieved, however
  the bulk of the work is now complete.
Org.jl implements the vast majority of the org-syntax document (see the
  Progress table). This can be checked by looking at Org.compatability in
  Julia.
# after installing with ~] add Org~ or ~Pkg.add("Org")~
using Org
text1 = org"Some *Org* markup, written with ease using the ~org\"\"~ macro."
parsetree(text1)  # show the generated parse tree
text2 = parse(OrgDoc, "Some *Org* markup, written with ease using the ~parse~ function.")
diff(text1, text2)  # show the components of the parse trees that differ
dochead = @doc Org.Heading  # the documentation for the Heading component (::OrgDoc)
org(dochead)  # generate Org text that produces the Org.Heading object
string(dochead)  # as above, but produces a String
parse(OrgDoc, string(dochead)) == dochead  # round-trip equality
# get the lang of each source block
[c.lang for c in dochead.components if c isa Org.SourceBlock]| Component | Type | Parse | Org | Term | HTML | 
|---|---|---|---|---|---|
| Heading | X | X | X | X | X | 
| Section | X | X | X | X | X | 
| Affiliated Keywords | X | X | X | X | |
| GreaterBlock | X | X | X | X | X | 
| Drawer | X | X | X | X | X | 
| DynamicBlock | X | X | X | X | X | 
| FootnoteDefinition | X | X | X | X | |
| InlineTask | X | ||||
| Item | X | X | X | X | X | 
| List | X | X | X | X | X | 
| PropertyDrawer | X | X | X | X | X | 
| Table | X | X | X | X | X | 
| BabelCall | X | X | X | X | X | 
| Block | X | X | X | X | |
| Clock | X | X | X | X | |
| DiarySexp | X | X | X | X | |
| Planning | X | X | X | X | |
| Comment | X | X | X | X | X | 
| FixedWidth | X | X | X | X | X | 
| HorizontalRule | X | X | X | X | X | 
| Keyword | X | X | X | X | |
| LaTeXEnvironment | X | X | X | X | |
| NodeProperty | X | X | X | X | X | 
| Paragraph | X | X | X | X | X | 
| TableRow | X | X | X | X | X | 
| TableHRule | X | X | X | X | X | 
| BlankLine | X | X | X | X | X | 
| OrgEntity | X | X | X | X | X | 
| LaTeXFragment | X | X | X | X | |
| ExportSnippet | X | X | X | X | X | 
| FootnoteReference | X | X | X | X | X | 
| InlineBabelCall | X | X | X | X | X | 
| InlineSrcBlock | X | X | X | X | X | 
| RadioLink | X | X | X | X | X | 
| PlainLink | X | X | X | X | X | 
| AngleLink | X | X | X | X | X | 
| RegularLink | X | X | X | X | X | 
| LineBreak | X | X | X | X | X | 
| Macro | X | X | X | X | X | 
| Citation | X | X | X | X | X | 
| RadioTarget | X | X | X | X | X | 
| Target | X | X | X | X | X | 
| StatisticsCookie | X | X | X | X | X | 
| Subscript | X | X | X | X | X | 
| Superscript | X | X | X | X | X | 
| TableCell | X | X | X | X | X | 
| Timestamp | X | X | X | X | X | 
| TextPlain | X | X | X | X | X | 
| TextMarkup | X | X | X | X | X |