What are the possible element containers
Sections
Sections are divided by headlines.
Zeroth section
* First headline
First section
** Child headline
Child section
* Second top-level headline
Second top-level section
Greater blocks
#+begin_center
elements
#+end_center
Drawers
:drawername:
elements
:end:
Dynamic blocks
* Headline
#+BEGIN: clocktable :scope subtree :maxlevel 2
#+CAPTION: Clock summary at [2023-04-16 Sun 16:13]
| Headline | Time |
|--------------+--------|
| *Total time* | *0:00* |
#+END:
Footnote definitions
[fn:1] A footnote definition.
[fn:2] A multi-line
footnote definition.
Plain Lists
1. foo
1. bar
2. baz
Which container takes priority
This test interleaves the opening and closing of each element container to see which element becomes parsed vs gets broken up. The row determines the first opening element and the column determines the second opening element.
Section | Greater Block | Drawer | Dynamic Block | Footnote Definition | Plain List | Paragraph | |
---|---|---|---|---|---|---|---|
Section | - | Section | Section | Section | Section | Section | Section |
Greater Block | Section | First | First | First | First | First | First |
Drawer | Section | First | First | First | First | First | First |
Dynamic Block | Section | First | First | First | First | First | First |
Footnote Definition | Section | First | First | First | - | - | - |
Plain List | Section | Second | Second | Second | - | - | - |
Paragraph | Section | Second | Second | Second | - | - | - |
Possible solutions
Greater blocks, drawers, and dynamic blocks disable plain list exit matcher
Test Case 1
1. foo
#+begin_center
2. bar
baz
#+end_center
Parse out headlines first
Then go through elements parsing them in-order
Should paragraph exit matcher apply to the element matcher in the exit matcher
No. But paragraph exit matcher needs to apply to the object matcher.
Maybe two groups of elements: alpha and beta
When entering an alpha element, ignore beta exit matchers above this in the context.