]> git.wincent.com - wikitext.git/commit
Fix obscure bug handling empty lines in PRE blocks
authorWincent Colaiuta <win@wincent.com>
Fri, 21 Mar 2008 00:52:20 +0000 (01:52 +0100)
committerWincent Colaiuta <win@wincent.com>
Fri, 21 Mar 2008 01:22:08 +0000 (02:22 +0100)
commit0a328f1fb3fea4f43e1e38a64e5a4361ef883ab4
treeb986960cc8b67493437216077c3e5c5dc3a50e5d
parent2f8d7bddcf471214ceaee5b99398b15e66f7efd7
Fix obscure bug handling empty lines in PRE blocks

If a PRE block was marked up using an intial leading space then any
"empty" lines (ie. lines containing only a space) would incorrectly
close the block; if the block continued on subsequent lines then it
would be re-opened.

This commit adds a regression spec, fixes the bug, and tweaks the
integration spec because the fix exposed a dormant bug in the spec (an
extra space which should have altered the output).

The fix consists of a few parts: on seeing a CRLF we clear the line
buffer _before_ calling NEXT_TOKEN (otherwise whatever gets pushed onto
the line buffer by NEXT_TOKEN will get blown away and won't be taken
into consideration the next time around the loop); we drop the useless
NO_ITEM test (I don't believe this test can ever pass as by definition
we are guaranteed to have at least PRE or BLOCKQUOTE plus CRLF on the
line buffer at that point); and finally we special-case the situation
where the _only_ thing on the line is a PRE token (here we emit any
pending newline as required).

Some additional specs are included in pre_spec.rb to show the benefit
of this new handling.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
ext/parser.c
spec/integration_spec.rb
spec/pre_spec.rb
spec/regressions_spec.rb