Org.jl

Hacky org-mode parser in Julia
Author non-Jedi
Popularity
6 Stars
Updated Last
2 Years Ago
Started In
July 2019

Org.jl

https://travis-ci.org/non-Jedi/Org.jl.svg?branch=master https://coveralls.io/repos/github/non-Jedi/Org.jl/badge.svg?branch=master

This is an incomplete experiment in how quickly I can slap together a parser for org-mode files without bothering to gain any background in parsing theory. Org-mode documents will be parsed according to my understanding of org rather than according to the org-mode source code or any formal grammar.

Usage

Parse an org string or IO into an Org.Document with Org.parse_org. Org.Document and all its children elements will have a field containing their children elements called contents. Some types of org constructs may have additional fields with information.

Org.jl improvements before it’s useful

  • [X] Develop architecture that can handle context-sensitivity
  • [X] Parse headlines
  • [X] Parse paragraphs
  • [X] Hook parsers together to parse whole document instead of only elements
  • [ ] Integrate with Documenter.jl
  • [X] Document the package
  • [ ] Register in General

Org.jl improvements necessary for purpose

These are the nice-to-have features. In some cases very nice to have.

  • [ ] Parse code-blocks
  • [ ] Parse example blocks
  • [ ] Parse lists
    • [ ] Ordered lists
    • [ ] Unordered lists
    • [ ] Description lists
    • [ ] Checkboxes
  • [ ] Parse image links
  • [ ] Parse inline elements
    • [ ] bold
    • [ ] italics
    • [ ] underline
    • [ ] links
      • [ ] internal
      • [ ] external
    • [ ] verbatim
    • [ ] code
  • [ ] Parse tables
  • [ ] Writers for org elements and org docs

Org.jl long-term features

These are the “if I ever feel the need” features.

  • [ ] Advanced table features
    • [ ] Formula handling
  • [ ] Parse drawers
  • [ ] Parse properties
    • [ ] Property drawer
    • [ ] Whole-file properties (#+PROPERTY: mykey myvalues, etc.)
  • [ ] Parse quote blocks
  • [ ] Parse more inline elements
    • [ ] timestamps
    • [ ] subscripts
    • [ ] superscripts
    • [ ] Radio targets (<<target>>)
  • [ ] Parse footnotes
    • [ ] Develop suitable architecture for representing and parsing footnotes
  • [ ] Parse embedded LaTeX
    • [ ] Fragments between $
    • [ ] \( and \) delimiters
    • [ ] \[ and \] delimiters
    • [ ] \begin{environment and \end{environment} delimiters
  • [ ] Parse #+NAME: constructs
  • [ ] Parse captions (#+CAPTION:)
  • [ ] Parse inline elements from headline elements and other non-paragraph locations
  • [ ] TODO list functionality