]> git.wincent.com - wikitext.git/commitdiff
Handle blank link text
authorWincent Colaiuta <win@wincent.com>
Fri, 8 May 2009 11:41:31 +0000 (13:41 +0200)
committerWincent Colaiuta <win@wincent.com>
Fri, 8 May 2009 11:41:31 +0000 (13:41 +0200)
We already correctly handled zero-width link text (eg. [[foo|]]),
but did not check for link text which was non-zero-width but
blank (eg. [[foo| ]]).

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

index 625a03cb4124ef9c8ea480d4b716a8662d79a80b..7ef539591e00633b1199be4f5b049da8ed530589 100644 (file)
@@ -2204,7 +2204,9 @@ VALUE Wikitext_parser_parse(int argc, VALUE *argv, VALUE self)
                         rb_str_cat(parser->output, link_end, sizeof(link_end) - 1);
                         break;
                     }
-                    if (NIL_P(parser->link_text) || RSTRING_LEN(parser->link_text) == 0)
+                    if (NIL_P(parser->link_text) ||
+                        RSTRING_LEN(parser->link_text) == 0 ||
+                        _Wikitext_blank(parser->link_text))
                         // use link target as link text
                         parser->link_text = _Wikitext_parser_sanitize_link_target(parser, Qfalse);
                     else
index 240695d3fbc1ed58a87a4ea0317b7b53eef36d6b..5e4d5886e12276ca4289f24204944c59c6a9942b 100755 (executable)
@@ -823,9 +823,15 @@ describe Wikitext::Parser, 'internal links (space to underscore on)' do
     end
 
     describe 'missing link text' do
-      it 'should use link target' do
+      it 'should use link target (zero-width link text)' do
         @parser.parse('[[foo|]]').should == %Q{<p><a href="/wiki/foo">foo</a></p>\n}
       end
+
+      # was a bug in version <= 1.6
+      # emitted: <p><a href="/wiki/foo"></a></p>\n
+      it 'should use link target (blank link text)' do
+        @parser.parse('[[foo| ]]').should == %Q{<p><a href="/wiki/foo">foo</a></p>\n}
+      end
     end
 
     describe 'link cut off at separator (end-of-file)' do