Optional/mandatory whitespace in §5.5 Advanced line types

easeout at tilde.team easeout at tilde.team
Sun Sep 13 04:20:46 BST 2020


On Sat, Sep 12, 2020 at 07:46:12PM -0700, Nathan Galt wrote:
> I noticed that the spec has three different advanced line types and three different whitespace handling verbiages for each.
> 
> Heading lines: Start with 1–3 “#”, then optional whitespace.
> List items: Start with “* “ (note the space!)
> Quote lines: Start with “>” 
> 
> Shouldn’t these three have the same whitespace rules, with the same phrasing?

I'm inclined to agree.

> Here’s my argument for “mandatory whitespace for all” ([\t ]+):
> 
> - It lets authors write “#3. I like eggs.” without accidentally getting that line parsed as if it were a heading (we don’t have backslash escapes like Markdown does)
> - It’s better for some emoticons that, um, might be out there that start with > or *
> - “#Steak” looks like a hashtag, and I could see some fraction of authors writing “#blah” _meaning_ for it to be a tag
> - We shouldn’t be worried about backcompat at v0.14.2. I don’t have much gemini text, but I’m the sort who would reformat his own non-conformant documents to match something like this.

Let's also consider the other way these three cases could have the same
whitespace rules, which is to make that whitespace always optional
rather than always required.

Pros of all-optional whitespace:
- Parsing is one step simpler than requiring at least one whitespace
  character.
- Parsing is compatible with existing Gemtext. (I also think this is not
  that big of a deal, but let's list it.)

Cons:
- At the beginning of an intended plain text line, some common forms of
  expression like "*Foo*", "#Foo", and ">_<" would be interpreted as
  list items, headings, or quotations.

…and that's all I've got. Having thought through it, I think mandatory
whitespace sounds like a better choice.


More information about the Gemini mailing list