#+title: Org.jl #+author: tecosaur
#+html:
A library for working with Org files. Specifically, this provides utilities for:
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 [[https://orgmode.org/worg/dev/org-syntax.html][org-syntax]] document (see the
Progress table). This can be checked by looking at Org.compatability in
Julia.
#+begin_src julia
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
[c.lang for c in dochead.components if c isa Org.SourceBlock] #+end_src
| 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 |