Thomas Mortagne wrote:
On Mon, Jan 18, 2010 at 19:53, Andreas Jonsson
<aj(a)member.fsf.org> wrote:
Unexpected: No empty lines event is generated if
there are exactly two
new lines before something that is not a paragraph.
Expected: Empty lines event should always be generated on
sequences of two or more new lines characters.
You mean you don't have newline event with:
{{macro/}}
{{macro/}}
<<<<<<<<<<<<<<<<<<<<<<<<<<
? In that case yes it's a bug IMO
Actually, I should have written "in front of anything which is not a
paragraph, macro block, or verbatim block". Any place where
sendOnEmptyLinesEvent(true) is called. For example in this case:
paragraph
<NL>
<NL>
| table
I guess I trusted the comment ;) . Notice that fContext.onEmptyLines
will never be called with argument 1 if shouldIncrement is true:
/**
* If shouldIncrement is true send one more empty lines. All block
* elements other than paragraph should call shouldIncremet with
* true since we need to emit one more new line for them (since the
* lexer "eats" a NewLine token to recognize these block elements.
*/
void sendOnEmptyLinesEvent(boolean shouldIncrement):
{
}
{
{
if (emptyLinesCount > 1) {
fContext.onEmptyLines(shouldIncrement ? emptyLinesCount :
emptyLinesCount - 1);
}
emptyLinesCount = 0;
}
}
Unexpected: If
there are block parameters before an empty line, an
empty paragraph is generated and the parameters are
applied to these.
Expected: Block parameters should be applied to the following
header, table, paragraph etc.
I don't agree for the paragraph, that's the general rule: spaces are
meaningful. Space is a character like another and there is no reason
it does not behave like another. Now i agree that it's understandable
for other blocks like header/table/... Thing is it looks like a pain
to do it one way for paragraph and another for other blocks.
A reasonable alternative is that the parameters should be
applied to the element that represents the empty line. But this
is not what is happening in the parser. Actually, there are no
code that deals with this situation specifically. It is just
happens to be caught by the paragraph production, despite
the fact that there is no paragraph after the parameters.
/Andreas Jonsson