On 1/1/07, Ian Barland <[EMAIL PROTECTED]> wrote:
> FWIW, you can simplify this slightly by getting rid of the "might be
> escaped" list -- just decree "*any* (punctuation) character might be
> escaped" (using a backslash)[^1].

OK

> Almost for free, this lets people quote a
> space ("\ " would be marked down to "&nbsp;"), as well as quote a newline: a
> backslash at the end of a line would translate naturally to "<br/>".
>
> This rule simpler for both markdown-users and markdown-implementers.

After an initial rejection[^1], I agree on both of these. In
particular, as an indicator of a linebreak, it would be better than
the 2 spaces, because it provides the user with visual feedback.

[^1] a "\" at the end of the line makes me think of the exact opposite
of a linebreak (in C, for example, the \ at the end of the line joins
the line with the next).

> [1] Even further, you could allow non-punctuation to be escaped.

In a sense, this is the most consinstent way of escaping.

If the rule holds for every context in the document, than the
algorithm for interpreting the document is very very simple:
1 - first pass: substitute every escaped sequence with placeholders
representing the literal
2 - do regexp/parsing ignoring the escapes
3 - substitute the placeholders

> Though it
> might surprise users who write a back\slash only to have markdown seem to
> mysteriously erase that character.

I think this is not so common. If you want to talk about backslashes,
you talk about code, and you probably will be using `\`.

The summary of all this discussion is:
1) Everywhere all characters can be escaped (except in code blocks)
  a)  "\ " represents a non-breaking space
  b)  \<newline> represents a linebreak
2) Inside "quoted values", you MUST escape `"`
3) Inside 'quoted values', you MUST escape `'`

I would tend to drop the special case
> [text](url "title"with"quotes")
as it is ambiguous.

The first pass of processing the document simply becomes:

    until eof
       c = getc
       if c == '\'
           push literal(getc)
       else if c == backtick `
           count the number of backticks
           possibly, eat one space
           threat as literals everything until closing backtics
       else
          push literal(getc)
      end
   end

-- 
Andrea Censi
      "Life is too important to be taken seriously" (Oscar Wilde)
Web: http://www.dis.uniroma1.it/~censi
_______________________________________________
Markdown-Discuss mailing list
[email protected]
http://six.pairlist.net/mailman/listinfo/markdown-discuss

Reply via email to