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.
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.
- [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
- [ ] Export parsed org to whatever format is used by Documenter.jl
- [ ] Integrate with upstream feature branch
- [X] Document the package
- [ ] Register in General
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
- [ ] Should OrgTables.jl be re-used?
- [ ] Writers for org elements and org docs
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
- [ ] Fragments between
- [ ] Parse
#+NAME:
constructs - [ ] Parse captions (
#+CAPTION:
) - [ ] Parse inline elements from headline elements and other non-paragraph locations
- [ ] TODO list functionality