friendlyfashion-rails_autolink 1.0.11 → 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,7 @@
1
+ === 1.0.12 / 2013-03-22
2
+
3
+ * Added support for passsing options in block
4
+
1
5
  === 1.0.7 / 2012-04-27
2
6
 
3
7
  * Added support for non-latin characters in autolinked urls
@@ -15,7 +15,7 @@ module RailsAutolink
15
15
  # <tt>:email_addresses</tt>, and <tt>:urls</tt>. If a block is given, each URL and
16
16
  # e-mail address is yielded and the result is used as the link text. By default the
17
17
  # text given is sanitized, you can override this behaviour setting the
18
- # <tt>:sanitize</tt> option to false, or you can add options to the sanitization of
18
+ # <tt>:sanitize</tt> option to false, or you can add options to the sanitization of
19
19
  # the text using the <tt>:sanitize_options</tt> option hash.
20
20
  #
21
21
  # ==== Examples
@@ -106,9 +106,17 @@ module RailsAutolink
106
106
  end
107
107
 
108
108
  link_text = block_given?? yield(href) : href
109
+
110
+ custom_link_attributes = link_attributes
111
+
109
112
  if link_text.is_a?(Hash)
110
- href = link_text[:href] || href
111
- link_text = link_text[:text] || href
113
+
114
+ if link_text[:html_options] && link_text[:html_options].is_a?(Hash)
115
+ custom_link_attributes = link_text[:html_options].stringify_keys
116
+ end
117
+
118
+ href = link_text[:href] || href
119
+ link_text = link_text[:text] || href
112
120
  else
113
121
  href = 'http://' + href unless scheme
114
122
  end
@@ -117,7 +125,7 @@ module RailsAutolink
117
125
  link_text = sanitize(link_text)
118
126
  href = sanitize(href)
119
127
  end
120
- content_tag(:a, link_text, link_attributes.merge('href' => href), !!options[:sanitize]) + punctuation.reverse.join('')
128
+ content_tag(:a, link_text, custom_link_attributes.merge('href' => href), !!options[:sanitize]) + punctuation.reverse.join('')
121
129
  end
122
130
  end
123
131
  end
@@ -1,8 +1,8 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'friendlyfashion-rails_autolink'
3
- s.version = '1.0.11'
4
- s.authors = ["Laurynas Butkus", "Tomas Didziokas", "Justas Janauskas", "Edvinas Bartkus"]
5
- s.email = ["laurynas.butkus@gmail.com", "tomas.did@gmail.com", "jjanauskas@gmail.com", "edvinas.bartkus@gmail.com"]
3
+ s.version = '1.0.12'
4
+ s.authors = ["Laurynas Butkus", "Tomas Didziokas", "Justas Janauskas", "Edvinas Bartkus", "Andrius Janauskas"]
5
+ s.email = ["laurynas.butkus@gmail.com", "tomas.did@gmail.com", "jjanauskas@gmail.com", "edvinas.bartkus@gmail.com", "andrius.janauskas@gmail.com"]
6
6
  s.summary = 'This is an extraction of the `auto_link` method from rails. The `auto_link` method was removed from Rails in version Rails 3.1. This gem is meant to bridge the gap for people migrating.'
7
7
 
8
8
  s.add_dependency 'rails', '> 3.1'
@@ -58,6 +58,24 @@ class TestRailsAutolink < MiniTest::Unit::TestCase
58
58
  assert_equal '<a href="http://www.facebook.com">www.facebook.com</a>', result
59
59
  end
60
60
 
61
+ def test_auto_link_with_block_which_returns_hash_with_html_options
62
+ url = 'http://www.google.com/'
63
+ result = auto_link(url) do |it|
64
+ { text: "www.facebook.com", href: "http://www.facebook.com", html_options: { rel: "nofollow" } }
65
+ end
66
+
67
+ assert_equal '<a href="http://www.facebook.com" rel="nofollow">www.facebook.com</a>', result
68
+ end
69
+
70
+ def test_auto_link_with_block_which_returns_hash_with_html_options_override
71
+ url = 'http://www.google.com/'
72
+ result = auto_link(url, { rel: "nofollow" }) do |it|
73
+ { text: "www.facebook.com", href: "http://www.facebook.com", html_options: { } }
74
+ end
75
+
76
+ assert_equal '<a href="http://www.facebook.com">www.facebook.com</a>', result
77
+ end
78
+
61
79
  def test_auto_link_with_options_hash
62
80
  assert_dom_equal 'Welcome to my new blog at <a href="http://www.myblog.com/" class="menu" target="_blank">http://www.myblog.com/</a>. Please e-mail me at <a href="mailto:me@email.com" class="menu" target="_blank">me@email.com</a>.',
63
81
  auto_link("Welcome to my new blog at http://www.myblog.com/. Please e-mail me at me@email.com.",
@@ -97,17 +115,17 @@ class TestRailsAutolink < MiniTest::Unit::TestCase
97
115
  assert_equal %{<a href="http://www.rubyonrails.com?id=1&num=2">http://www.rubyonrails.com?id=1&num=2</a>}, auto_link("#{link_raw}#{malicious_script}")
98
116
  assert auto_link("#{link_raw}#{malicious_script}").html_safe?
99
117
  end
100
-
118
+
101
119
  def test_auto_link_should_sanitize_input_with_sanitize_options
102
120
  link_raw = %{http://www.rubyonrails.com?id=1&num=2}
103
121
  malicious_script = '<script>alert("malicious!")</script>'
104
122
  text_with_attributes = %{<a href="http://ruby-lang-org" target="_blank" data-malicious="inject">Ruby</a>}
105
-
123
+
106
124
  text_result = %{<a class="big" href="http://www.rubyonrails.com?id=1&num=2">http://www.rubyonrails.com?id=1&num=2</a><a href="http://ruby-lang-org" target="_blank">Ruby</a>}
107
125
  assert_equal text_result, auto_link("#{link_raw}#{malicious_script}#{text_with_attributes}",
108
126
  :sanitize_options => {:attributes => ["target", "href"]},
109
127
  :html => {:class => 'big'})
110
-
128
+
111
129
  assert auto_link("#{link_raw}#{malicious_script}#{text_with_attributes}",
112
130
  :sanitize_options => {:attributes => ["target", "href"]},
113
131
  :html => {:class => 'big'}).html_safe?
@@ -116,7 +134,7 @@ class TestRailsAutolink < MiniTest::Unit::TestCase
116
134
  def test_auto_link_should_not_sanitize_input_when_sanitize_option_is_false
117
135
  link_raw = %{http://www.rubyonrails.com?id=1&num=2}
118
136
  malicious_script = '<script>alert("malicious!")</script>'
119
-
137
+
120
138
  assert_equal %{<a href="http://www.rubyonrails.com?id=1&num=2">http://www.rubyonrails.com?id=1&num=2</a><script>alert("malicious!")</script>}, auto_link("#{link_raw}#{malicious_script}", :sanitize => false)
121
139
  assert !auto_link("#{link_raw}#{malicious_script}", :sanitize => false).html_safe?
122
140
  end
@@ -165,14 +183,14 @@ class TestRailsAutolink < MiniTest::Unit::TestCase
165
183
  email_raw = 'santiago@wyeworks.com'
166
184
  link_raw = 'http://www.rubyonrails.org'
167
185
  malicious_script = '<script>alert("malicious!")</script>'
168
-
186
+
169
187
  assert auto_link(nil).html_safe?, 'should be html safe'
170
188
  assert auto_link('').html_safe?, 'should be html safe'
171
189
  assert auto_link("#{link_raw} #{link_raw} #{link_raw}").html_safe?, 'should be html safe'
172
190
  assert auto_link("hello #{email_raw}").html_safe?, 'should be html safe'
173
191
  assert auto_link("hello #{email_raw} #{malicious_script}").html_safe?, 'should be html safe'
174
192
  end
175
-
193
+
176
194
  def test_auto_link_should_not_be_html_safe_when_sanitize_option_false
177
195
  email_raw = 'santiago@wyeworks.com'
178
196
  link_raw = 'http://www.rubyonrails.org'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: friendlyfashion-rails_autolink
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.11
4
+ version: 1.0.12
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,10 +9,11 @@ authors:
9
9
  - Tomas Didziokas
10
10
  - Justas Janauskas
11
11
  - Edvinas Bartkus
12
+ - Andrius Janauskas
12
13
  autorequire:
13
14
  bindir: bin
14
15
  cert_chain: []
15
- date: 2013-02-21 00:00:00.000000000 Z
16
+ date: 2013-03-22 00:00:00.000000000 Z
16
17
  dependencies:
17
18
  - !ruby/object:Gem::Dependency
18
19
  name: rails
@@ -36,6 +37,7 @@ email:
36
37
  - tomas.did@gmail.com
37
38
  - jjanauskas@gmail.com
38
39
  - edvinas.bartkus@gmail.com
40
+ - andrius.janauskas@gmail.com
39
41
  executables: []
40
42
  extensions: []
41
43
  extra_rdoc_files: []