]> git.wincent.com - wikitext.git/commitdiff
Add support for "absolute" image "src" attributes
authorWincent Colaiuta <win@wincent.com>
Wed, 6 May 2009 22:02:46 +0000 (00:02 +0200)
committerWincent Colaiuta <win@wincent.com>
Wed, 6 May 2009 22:15:12 +0000 (00:15 +0200)
Under the default settings input like "{{foo.png}}" will be translated
to an "img" tag with "src" attribute of "/images/foo.png".

With this commit, we provide a shortcut for breaking out of the "prefix"
directory: any target beginning with a slash will be interpreted as
"absolute". So input like "{{/foo.png}}" will yield a "src" of
"/foo.png".

This is a somewhat prettier mechanism than using inputs like
"{{../foo.png}}", which already worked under the current translator.

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

index 18e9a580881be9c215eea4045a10c60ee41957e7..4cae1a052e4ecd0b93da4b912f1768f8ef86830c 100644 (file)
@@ -271,6 +271,16 @@ Would become:
 You can override the "/images/" prefix using the +img_prefix+ attribute
 of the Parser.
 
+You can also specify "absolute" image "src" attributes regardless of
+the current prefix setting by starting the image path with a forward
+slash; that is:
+
+  {{/foo.png}}
+
+Would become:
+
+  <img src="/foo.png" alt="/foo.png" />
+
 = Links
 
 * RubyForge project page: http://rubyforge.org/projects/wikitext
index 070ff26667c59aa93b0a90df5ed35a42b8028f72..50c427036ad0730bdd373096c38a430f9beb90ba 100644 (file)
@@ -258,7 +258,7 @@ VALUE _Wikitext_hyperlink(parser_t *parser, VALUE link_prefix, VALUE link_target
 void _Wikitext_append_img(parser_t *parser, char *token_ptr, int token_len)
 {
     rb_str_cat(parser->output, img_start, sizeof(img_start) - 1);   // <img src="
-    if (!NIL_P(parser->img_prefix))
+    if (!NIL_P(parser->img_prefix) && *token_ptr != '/')            // len always > 0
         rb_str_append(parser->output, parser->img_prefix);
     rb_str_cat(parser->output, token_ptr, token_len);
     rb_str_cat(parser->output, img_alt, sizeof(img_alt) - 1);       // " alt="
index 03fac30cbc87e040352da41ad49fce91c99392da..c2d06d00481f7c279faeca36a6b339c90cd25b1e 100644 (file)
@@ -47,6 +47,11 @@ describe Wikitext::Parser, 'embedding img tags' do
     @parser.parse('{{}}').should == %Q{<p>{{}}</p>\n}
   end
 
+  it 'should not append prefix if img src starts with a slash' do
+    @parser.parse('{{/foo.png}}').should ==
+      %Q{<p><img src="/foo.png" alt="/foo.png" /></p>\n}
+  end
+
   it 'should work in BLOCKQUOTE blocks' do
     expected = dedent <<-END
       <blockquote>