# Main Headline
Normal text that is wrapped should become
one long line in the output.
### Skipped header level
H3s should be preceded by at least one H2.
H2 should be preceded by at least one H1.
Should die on error unless you have a flag saying that it's OK.
## Inline **markup**
We need \*escape characters\* to work \`well\`.
**This** _text_ *should* become ***really* good** `plain` text.
Change strike-through to ^W style syntax.
Delete these three words and call it a day.
### Unordered Lists
* How to make an unordered list
* And what to do about nesting
* Turn it into a sequence of flat lists?
- Or some other solution?
- Not sure
* Just flatten them for now but print a warning.
### Ordered Lists
1. Hardwrapped lists is apparently a thing in lowdown
that we need to deal with.
2. Just turn them into normal hardwrapped lines is the plan.
#### Header Level 4
Should just become: "Header Level 4." with a period. Print a warning on H4, H5, H6 on but don't die.
##### Header Level 5.
Should just become: "Header Level 4." with one period, not two.
###### Ordered lists
1. Ordered lists should renumber their numbers
1. And hardwrap
1. Same nesting problem
1. as unordered lists have.
2. Flatten, and then renumber, and print a warning.
Blockquote joining
> These lines
> should *be* all on
> one line
>
> This should be
> two separate lines.
### Blockquote Nesting
>> This is an example of a nested quote.
>
> It should go through. Good luck Gemini clients.
This isn't to extend the client necessarily.
Maybe I should die with error and make this an option instead.
>>> Here is an even deeper
>>> nested quote.
>>
>> I just pass them through.
>
> List flattened, quotes not.
### Preformatted text
We need a untouched *pre-formatted* mode
that respects line breaks
and empty lines.
We want to replace horizontal rules with one extra newline.
-----
So there should be two newlines between these paragraphs. Other than
that, we want to collapse blank lines down to one, outside of
preformat toggled lines.
Images and Links
----------------
### Images
![Images are treated like any other links](https://idiomdrottning.org/idiomdrottning_dark_thistle.png "Hover titles are ditched")
### Links
Some text with [a link](gemini://url.to/url) in the middle of it.
Maybe some [longer
text][lt] with several [links
inside] is a good
thing to test. And [a non-link bracket].
[lt]: gemini://so.boring/and/long "My Favorite Longer Text"
[links inside]: gemini://some.url
The correct placement for all accumulated links that have been
"extracted" in such a way, is which ever comes first out of:
- Just before the next non-"extracted" link (i.e. a link from a list or stand-alone ``, see below)
- Just before the next header
- Just before the end of the document
Some examples of non-extracted links:
- another plain list entry
- some [link](gemini://some.url) in a list
- [some other link in a list](gemini://some.url)
- a non-linked list entry
for lists. Both `
` and `` should be
turned into link lines without blank lines in between.
A [very short p with a link](gemini://some.url)
[An all-link p](gemini://some.url)
---
A p that's [shorter](gemini://some.url) than sixty characters counts as short
A p that's [longer](gemini://some.url) than sixty characters counts as long and needs to be extracted.
Unless [the link is more than half longer of that p regardless of length then it counts](gemini://some.url) as non-extracted.
----
[My friend](gemini://some.url) wrote:
> The perfect quote intro.
> Classic idomatic gemini.
## Tables
col a |
col b |
a |
html |
table |
also |
without |
any colspan |
## Extensions
It doesn't need to handle LaTeX math. On the longer roadmap, make a
separate preprocessor to turn LaTeX math into AsciiMath.
I do want it to support liquid style includes like {% include_absolute 'foo' %}