]> git.wincent.com - wikitext.git/commitdiff
Add docs and specs for external_link_rel attribute
authorWincent Colaiuta <win@wincent.com>
Sun, 17 Oct 2010 15:04:07 +0000 (17:04 +0200)
committerWincent Colaiuta <win@wincent.com>
Sun, 17 Oct 2010 15:04:07 +0000 (17:04 +0200)
Signed-off-by: Wincent Colaiuta <win@wincent.com>
README.rdoc
doc/RELEASE-NOTES
doc/rdoc.rb
spec/external_link_spec.rb

index a0951b3649f5724ab554548ac99743cd4a4676f7..31d500e0145881649f3983d9a1510373bf9bb948 100644 (file)
@@ -290,9 +290,10 @@ Would become:
     !!!html
     <a href="http://example.com/" class="external">this site</a>
 
-See the Wikitext::Parser attributes documentation for information on
+See the {Wikitext::Parser} attributes documentation for information on
 overriding the default external link class (+external+ in this
-example).
+example), or including a +rel+ attribute of "nofollow" (which may be
+useful for search-engine optimization).
 
 Note that in addition to providing a fully-qualified URL including a
 protocol (such as "http://" or "ftp://") you also have the option of
@@ -476,7 +477,13 @@ for full compatibility Wikitext version 2.0 or higher should be used.
 * RubyForge project page: http://rubyforge.org/projects/wikitext
 * RDoc: http://wikitext.rubyforge.org
 * Source: http://git.wincent.com/wikitext.git
-* Author/maintainer: Wincent Colaiuta (win@wincent.com, http://wincent.com)
+
+= Author
+
+Wikitext is written and maintained by Wincent Colaiuta (win@wincent.com).
+Other contributors that have submitted patches include:
+
+* Mike Stangel
 
 = License
 
index f15552e205648c3b2f2e4f00560cd04072598d96..fc4a2f2b6c0cb27dbecb003e0cfc52738f4cdaee 100644 (file)
@@ -6,6 +6,12 @@ require any user or developer action are generally not included
 in these release notes. For a full listing of all changes see
 the source code repository at: http://git.wincent.com.
 
+= Changes in 2.1
+
+* the +external_link_rel+ attribute can be used to include a
+  "nofollow" +rel+ attribute in external links (patch from Mike
+  Stangel)
+
 = Changes in 2.0
 
 * compatibility with the Rails 3 template handler API
index 1cd9fa10fedc539ca3b2d433a9de519a9fdd441e..851e63226a4c81c750e17deb79ca5124028891ec 100644 (file)
@@ -37,6 +37,32 @@ module Wikitext
   #     !!!html
   #     <a class="external" href="http://www.google.com/">the best search engine</a>
   #
+  # == +external_link_rel+ (String)
+  #
+  # The +rel+ attribute to be applied to external links (defaults to +nil+,
+  # meaning that no +rel+ attribute is applied). Setting a +rel+ attribute of
+  # "nofollow" may be useful for search-engine optimization (see
+  # http://en.wikipedia.org/wiki/Nofollow for more details).
+  #
+  # This attribute can be set during initialization:
+  #
+  #     parser = Wikitext::Parser.new :external_link_rel => 'nofollow'
+  #
+  # Or via setting an attribute on the parser:
+  #
+  #     parser = Wikitext::Parser.new
+  #     parser.external_link_rel = 'nofollow'
+  #
+  # Or at parse time:
+  #
+  #     parser = Wikitext::Parser.new
+  #     parser.parse input, :external_link_rel => 'nofollow'
+  #
+  # Setting +external_link_rel+ to +nil+ suppresses the emission of any
+  # previously configured +rel+ attribute:
+  #
+  #     parser.parse input, :external_link_rel => nil
+  #
   # == +mailto_class+ (String)
   #
   # The CSS class to be applied to external "mailto" links (defaults to
index deca45cfae48f2d004266ef865f617285d9038c3..7d5d8836fadce81956b95be1692106c4605444f4 100644 (file)
@@ -204,6 +204,47 @@ describe Wikitext::Parser, 'external links' do
     @parser.parse('> ]').should == "<blockquote>\n  <p>]</p>\n</blockquote>\n"                    # in BLOCKQUOTE scope
   end
 
+  describe '#external_link_rel attribute' do
+    it 'defaults to nil (external links do not have a rel attribute)' do
+      @parser.parse('http://google.com/').should == \
+        %Q{<p><a href="http://google.com/" class="external">http://google.com/</a></p>\n}
+    end
+
+    context 'set at parse time' do
+      it 'uses the rel attribute in external links' do
+        @parser.parse('http://google.com/', :external_link_rel => 'nofollow').should == \
+          %Q{<p><a href="http://google.com/" class="external" rel="nofollow">http://google.com/</a></p>\n}
+      end
+    end
+
+    context 'set at initialization time' do
+      let (:parser) { Wikitext::Parser.new :external_link_rel => 'nofollow' }
+
+      it 'uses the rel attribute in external links' do
+        parser.parse('http://google.com/').should == \
+          %Q{<p><a href="http://google.com/" class="external" rel="nofollow">http://google.com/</a></p>\n}
+      end
+
+      it 'is overrideable' do
+        parser.parse('http://google.com/', :external_link_rel => nil).should == \
+          %Q{<p><a href="http://google.com/" class="external">http://google.com/</a></p>\n}
+      end
+    end
+
+    context 'set via an accessor' do
+      let (:parser) do
+        parser = Wikitext::Parser.new
+        parser.external_link_rel = 'nofollow'
+        parser
+      end
+
+      it 'uses the rel attribute in external links' do
+        parser.parse('http://google.com/').should == \
+          %Q{<p><a href="http://google.com/" class="external" rel="nofollow">http://google.com/</a></p>\n}
+      end
+    end
+  end
+
   describe 'questionable links' do
     it 'should handle links which contain an embedded [ character' do
       # note that [ is allowed in the link text, although the result may be unexpected to the user