| At line 164 added 144 lines |
|
| ---- |
| //Discussion begun by email// |
|
| I am afraid, I find that the orderd/unordered list bug I reported earlier seems not to be fixed. |
|
| Rationale: When in list mode (ordered and unordered list) the parser interprets double {{{**}}} or {{{##}}} at the beginning of the next line as the beginning of a new list, when it should be just {{{<b>}}} or {{{<tt>}}}. It also writes empty {{{<b></b>}}} and places the contents before it (last example). |
|
| In my interpretation, this is not correct. I added two plain paragraph examples which show the correct behaviour, IMO. |
|
| Please find a few input and output examples below. I am using [[http://nyctergatis.com/creole/|NME-071004.zip]]. |
|
| Here is the Creole code: |
| {{{ |
| a b |
| ##c## |
|
| a b |
| **c** |
|
| * ##a## b |
| ##c## |
|
| # ##a## b |
| ##c## |
|
| * ##a## b |
| **c** |
|
| # a |
| ##b## |
|
| * a |
| **b** |
| }}} |
|
| My HTML output looks like this: |
| {{{ |
| <!-- Generated by Nyctergatis Markup Engine, Oct 5 2007 19:27:19 --> |
| <html><body> |
| <p>a b <tt>c</tt></p> |
| <p>a b <b>c</b></p> |
| <ul> |
| <li><tt>a</tt> b</li> |
| <ol> |
| <li>c<tt></tt></li> |
| </ol> |
| </ul> |
| <ol> |
| <li><tt>a</tt> b</li> |
| <ol> |
| <li>c<tt></tt></li> |
| </ol> |
| </ol> |
| <ul> |
| <li><tt>a</tt> b</li> |
| <ul> |
| <li>c<b></b></li> |
| </ul> |
| </ul> |
| <ol> |
| <li>a</li> |
| <ol> |
| <li>b<tt></tt></li> |
| </ol> |
| </ol> |
| <ul> |
| <li>a</li> |
| <ul> |
| <li>b<b></b></li> |
| </ul> |
| </ul> |
| </body></html> |
| }}} |
|
| -- RJ, 2007-Oct-5 |
|
| It isn't a bug, imo, it's Creole specifications and implementation choices. |
| Nested lists are supported in Creole, so double-stars and double-sharps should |
| begin sublists when they're at the beginning of a line in a list. A design |
| choice which can be criticized is that item mark mismatches (such as {{{#}}} |
| following {{{*}}}, or {{{##}}} following *) are ignored. It's documented, though |
| ("For clarity, list markers should be used in a consistent way; but only the |
| first item of each list fixes the kind of the whole list"). |
|
| I've "fixed" the problem with {{{##}}} in readme.nme you mentionned in a previous |
| message by moving it so that it doesn't appear at the beginning of a line. |
| My error is a proof that my design choice leads too easily to ambiguities. |
| I'm probably going to change it. |
|
| Finally, concerning the empty {{{<b></b>}}}, it's caused by a trailing style marker |
| at the end of a paragraph (the first occurence of {{{**}}} is the sublist item marker). |
| Not really a problem, I think: it reflects accurately the source, even if it's |
| useless. |
|
| If you generate automatically Creole markup, a simple way to avoid the |
| ambiguities of {{{**}}} and {{{##}}} in lists is to avoid line breaks in lists items, |
| and in paragraphs for the sake of consistency. That's how we've converted |
| our help files for Sysquake from XML. |
|
| -- [[YvesPiguet]], 2007-Oct-5 |
|
| (...) |
| From my novice common sense understanding I believe that the following could make sense: |
|
| New list items of any kind ({{{*}}}, {{{**}}}, {{{#}}}, {{{##}}}) are only started if there is at least one white space chacter after the list characters (all list examples in the documentation also do it this way): |
|
| {{{ |
| ##text## -- <tt>text</tt> |
| **text** -- <b>text</b> |
| }}} |
|
| but |
|
| {{{ |
| ## text -- <ol><ol><li>text</li></ol></ol> |
| ** text -- <ul><ul><li>text</li></ul></ul> |
| }}} |
|
| It would also solve the dilemma I reported previously, and it would also allow to start 2nd level nested cells with no prior 1st level nesting. |
|
| The rationale is that most list markers are white-space separated from the list in the final output. Because this is so common, I believe that it also makes the Wiki Syntax easier to read. And it there is not much sense in bold whitespace like {{{** text**}}} anyway (it would not be rendered by HTML for sure). |
|
| If I was to change the documentation, it would read like: |
|
| "List items begin with a {{{*}}} or a {{{#}}} at the beginning of a line. Whitespace is optional before the {{{*}}} or {{{#}}} characters, but at least one space is required to separate it from the item's text. A list item ends at the line which begins with a new list or sublist item (* or # character followed by a space), blank line, heading, table, or nowiki block; like paragraphs, it can span multiple lines and contain line breaks forced with {{{\\}}}." |
|
| I can see now why the {{{<b></b>}}} is there. But from a common sense persepective, I still believe it should not. |
|
| -- RJ, 2007-Oct-5 |
|
| Your suggestion was already discussed here: [[Require Space After Bullet Proposal]]. It wasn't retained... |
|
| -- [[YvesPiguet]], 2007-Oct-6 |
|
| In NME-071009, list markup must be consistent: in the example below, the first item spans two lines with //bar// displayed in monospace, and a one-item numbered sublist. |
| {{{ |
| * foo |
| ## bar |
| *# baz |
| }}} |
|
| -- [[YvesPiguet]], 2007-Oct-10 |
|