Try โ€‚โ€‰HackMD

Concise Mode Modifications

Text inside a tag

Current Syntax:

div
  -- Hello World

p --
  This is a
  bunch of text
  inside a paragraph

Pros:

  • Nice multiline

Cons:

  • Not familiar to newcomers

Proposal 1:

p
  `Hello World`
div `
  This is a
  bunch of text
  inside a paragraph
`

Pros:

  • Familiar to newcomers
  • It is usually clear when a text node ends with whitespace

Cons:

  • Multiline looks kind of gross
  • The end of the text node must be marked
  • ` must be escaped when used in a text node
  • It isn't clear what should happen here:
    โ€‹โ€‹โ€‹โ€‹p `there is some ` b `bold ` `text `
    โ€‹โ€‹โ€‹โ€‹    `in this paragraph.`
    

Semicolon as newline/indentation

Current behavior:

div; p
// => error
div; // comment
// => no error

Proposal 1:

div; p
// => p inside div
div; // comment
// => no error

Proposal 2:

div; p
// => p next to div
div > p
// => p inside div

Extra benefit: if and for can be used directly instead of with directives, which Luke thinks is more obvious at a glance

let/val = ""
input #value=val

// with directives
button #if=val onClick() { val = "" } -- clear

// with new syntax
if=val > button onClick() { val = "" } -- clear

Attributes in array

Current Behavior:

my-tag=default [
  attr1=false
  attr2=""
]

Pros:

  • No need for commas
  • Beginning and end are clearly marked
  • If modifications are made to current parsing, this is kind of nice:
    โ€‹โ€‹โ€‹โ€‹div [class="red"] p -- nested `p` on same line
    

Cons:

  • Luke doesn't like it

Proposal 1:

my-tag=default,
  attr1=false,
  attr2=""

/****** OR ******/

my-tag=default
  ,attr1=false
  ,attr2=""

/****** OR ******/

my-tag=default
  ,attr1=false attr2=""

Pros:

  • Basically already exists
  • Easy to describe

Cons:

  • May be harder to read
  • Every newline needs a comma

Proposal 2:

my-tag:
  =default
  attr1=false
  attr2="";

Pros:

  • Attribute block is clearly defined

Cons:

  • Default attribute is controversial
    • Especially with :=

CURRENT FAVORITE:

  • Use proposal 1 with commas, but lighten rules
    • comma is completely optional unless it is before or after a newline

Text Tag Body Content

For <script>, <style>, <textarea>, <html-comment> we shouldn't require -- inside the body of concise mode. HOWEVER, it would be a breaking change to treat -- as a part of the text so it is now optional.