2021-07-23
This is going to be an unpopular opinion, but here goes. (I also want to apologize in advance to anyone using a screen reader; this text discusses gemtext syntax and I assume screen readers will be unable to discern the subtle differences in examples.)
Now, the aforementioned tool uses a whole lot of regex magic to figure out which lines are what. And then there's of course some logic to handle whether we're inside a preformatted block or not (and because it translates to HTML there's also similar logic for whether we're inside a list or not, and I should probably add for whether or not we're in a blockquote block, but those issues are related to HTML rather than gemtext).
Anyway, that was then and now is now, and when I look at that code now and my current needs I feel a little unsatisfied with the needless parsing complexity of gemtext. Because even though it's very easy, it's still harder than it could be.
Consider these examples:
So, when parsing gemtext I need to consider the first one to three characters of the line, and whether or not it is within a preformatted block.
What if I always, without exception, just had to check the first three characters? The linetypes could be something like this:
# First level heading.
## Second level heading.
###Third level heading.
* List item.
=> Link line.
> Block quote line.
>> Preformatted line.
And of course any other line, which is just plain text.
The URL and text on a link line should be separated by a single blankspace, not an arbitrary number of any type of whitespace.
I also think that plain text lines should be trimmed of leading and trailing whitespace when rendered, simply because I don't see any reason to keep them, and it would also allow plain text lines to start with a leading space followed by a character combination that would otherwise cause the line type to be different.
Maybe I should have sent this to the mailing list, but it's not a proposal for change. It's just unfinished thoughts that I'd like feedback on.
-- CC0 Björn Wärmedal