actionview-encoded_mail_to 1.0.0

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.
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
@@ -0,0 +1,94 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ actionview-encoded_mail_to (1.0.0)
5
+ rails
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ actionmailer (3.2.9)
11
+ actionpack (= 3.2.9)
12
+ mail (~> 2.4.4)
13
+ actionpack (3.2.9)
14
+ activemodel (= 3.2.9)
15
+ activesupport (= 3.2.9)
16
+ builder (~> 3.0.0)
17
+ erubis (~> 2.7.0)
18
+ journey (~> 1.0.4)
19
+ rack (~> 1.4.0)
20
+ rack-cache (~> 1.2)
21
+ rack-test (~> 0.6.1)
22
+ sprockets (~> 2.2.1)
23
+ activemodel (3.2.9)
24
+ activesupport (= 3.2.9)
25
+ builder (~> 3.0.0)
26
+ activerecord (3.2.9)
27
+ activemodel (= 3.2.9)
28
+ activesupport (= 3.2.9)
29
+ arel (~> 3.0.2)
30
+ tzinfo (~> 0.3.29)
31
+ activeresource (3.2.9)
32
+ activemodel (= 3.2.9)
33
+ activesupport (= 3.2.9)
34
+ activesupport (3.2.9)
35
+ i18n (~> 0.6)
36
+ multi_json (~> 1.0)
37
+ arel (3.0.2)
38
+ builder (3.0.4)
39
+ erubis (2.7.0)
40
+ hike (1.2.1)
41
+ i18n (0.6.1)
42
+ journey (1.0.4)
43
+ json (1.7.5)
44
+ mail (2.4.4)
45
+ i18n (>= 0.4.0)
46
+ mime-types (~> 1.16)
47
+ treetop (~> 1.4.8)
48
+ mime-types (1.19)
49
+ minitest (4.3.3)
50
+ multi_json (1.5.0)
51
+ polyglot (0.3.3)
52
+ rack (1.4.1)
53
+ rack-cache (1.2)
54
+ rack (>= 0.4)
55
+ rack-ssl (1.3.2)
56
+ rack
57
+ rack-test (0.6.2)
58
+ rack (>= 1.0)
59
+ rails (3.2.9)
60
+ actionmailer (= 3.2.9)
61
+ actionpack (= 3.2.9)
62
+ activerecord (= 3.2.9)
63
+ activeresource (= 3.2.9)
64
+ activesupport (= 3.2.9)
65
+ bundler (~> 1.0)
66
+ railties (= 3.2.9)
67
+ railties (3.2.9)
68
+ actionpack (= 3.2.9)
69
+ activesupport (= 3.2.9)
70
+ rack-ssl (~> 1.3.2)
71
+ rake (>= 0.8.7)
72
+ rdoc (~> 3.4)
73
+ thor (>= 0.14.6, < 2.0)
74
+ rake (10.0.2)
75
+ rdoc (3.12)
76
+ json (~> 1.4)
77
+ sprockets (2.2.2)
78
+ hike (~> 1.2)
79
+ multi_json (~> 1.0)
80
+ rack (~> 1.0)
81
+ tilt (~> 1.1, != 1.3.0)
82
+ thor (0.16.0)
83
+ tilt (1.3.3)
84
+ treetop (1.4.12)
85
+ polyglot
86
+ polyglot (>= 0.3.1)
87
+ tzinfo (0.3.35)
88
+
89
+ PLATFORMS
90
+ ruby
91
+
92
+ DEPENDENCIES
93
+ actionview-encoded_mail_to!
94
+ minitest
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Nick Reed
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,61 @@
1
+ # actionview-encoded_mail_to
2
+ [![Build Status](https://secure.travis-ci.org/reednj77/actionview-encoded_mail_to.png)](http://travis-ci.org/reednj77/actionview-encoded_mail_to)
3
+
4
+ Deprecated support for email address obfuscation within the **mail_to** helper method. Restores the options `:encode`, `:replace_at`, and `:replace_dot`, which were removed from Rails in version 4.0.
5
+
6
+ Any call to **mail_to** that _doesn't_ include any of these options will be passed through to the core **mail_to** helper (in [ActionView::Helpers::UrlHelper](https://github.com/rails/rails/blob/master/actionpack/lib/action_view/helpers/url_helper.rb)).
7
+
8
+ ## Installation
9
+
10
+ Add this line to your application's Gemfile:
11
+
12
+ gem 'actionview-encoded_mail_to'
13
+
14
+ And then execute:
15
+
16
+ $ bundle
17
+
18
+ Or install it yourself as:
19
+
20
+ $ gem install actionview-encoded_mail_to
21
+
22
+ ## Usage
23
+
24
+ Use the `mail_to` helper method just as you did prior to Rails 4.0.
25
+
26
+ #### Restored Options
27
+
28
+ * `:encode` - This key will accept the strings "javascript" or "hex".
29
+ Passing "javascript" will dynamically create and encode the mailto link then
30
+ eval it into the DOM of the page. This method will not show the link on
31
+ the page if the user has JavaScript disabled. Passing "hex" will hex
32
+ encode the email_address before outputting the mailto link.
33
+ * `:replace_at` - When the link name isn't provided, the
34
+ email_address is used for the link label. You can use this option to
35
+ obfuscate the email_address by substituting the @ sign with the string
36
+ given as the value.
37
+ * `:replace_dot` - When the link name isn't provided, the
38
+ email_address is used for the link label. You can use this option to
39
+ obfuscate the email_address by substituting the `.` in the email with the
40
+ string given as the value.
41
+
42
+ #### Examples
43
+
44
+ ```ruby
45
+ mail_to "me@domain.com", "My email", encode: "javascript"
46
+ # => <script>eval(decodeURIComponent('%64%6f%63...%27%29%3b'))</script>
47
+
48
+ mail_to "me@domain.com", "My email", encode: "hex"
49
+ # => <a href="mailto:%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">My email</a>
50
+
51
+ mail_to "me@domain.com", nil, replace_at: "_at_", replace_dot: "_dot_", class: "email"
52
+ # => <a href="mailto:me@domain.com" class="email">me_at_domain_dot_com</a>
53
+ ```
54
+
55
+ ## Contributing
56
+
57
+ 1. Fork it
58
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
59
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
60
+ 4. Push to the branch (`git push origin my-new-feature`)
61
+ 5. Create new Pull Request
@@ -0,0 +1,7 @@
1
+ require "bundler/gem_tasks"
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.libs << 'test'
6
+ t.pattern = 'test/test_*.rb'
7
+ end
@@ -0,0 +1,19 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/action_view/encoded_mail_to/version', __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = 'actionview-encoded_mail_to'
6
+ s.version = ActionView::EncodedMailTo::VERSION
7
+ s.authors = 'Nick Reed'
8
+ s.email = 'reednj77@gmail.com'
9
+ s.description = %q{Rails mail_to helper with encoding (removed from core in Rails 4.0)}
10
+ s.summary = %q{Deprecated support for email address obfuscation within the mail_to helper method.}
11
+ s.homepage = 'https://github.com/reednj77/actionview-encoded_mail_to'
12
+
13
+ s.add_dependency 'rails'
14
+ s.add_development_dependency 'minitest'
15
+
16
+ s.files = Dir["#{File.dirname(__FILE__)}/**/*"]
17
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
18
+ s.require_paths = ["lib"]
19
+ end
@@ -0,0 +1,113 @@
1
+ # encoding: utf-8
2
+
3
+ module EncodedMailTo
4
+ module ::ActionView
5
+ module Helpers
6
+ module UrlHelper
7
+ # Creates a mailto link tag to the specified +email_address+, which is
8
+ # also used as the name of the link unless +name+ is specified. Additional
9
+ # HTML attributes for the link can be passed in +html_options+.
10
+ #
11
+ # +mail_to+ has several methods for hindering email harvesters and customizing
12
+ # the email itself by passing special keys to +html_options+.
13
+ #
14
+ # ==== Options
15
+ # * <tt>:encode</tt> - This key will accept the strings "javascript" or "hex".
16
+ # Passing "javascript" will dynamically create and encode the mailto link then
17
+ # eval it into the DOM of the page. This method will not show the link on
18
+ # the page if the user has JavaScript disabled. Passing "hex" will hex
19
+ # encode the +email_address+ before outputting the mailto link.
20
+ # * <tt>:replace_at</tt> - When the link +name+ isn't provided, the
21
+ # +email_address+ is used for the link label. You can use this option to
22
+ # obfuscate the +email_address+ by substituting the @ sign with the string
23
+ # given as the value.
24
+ # * <tt>:replace_dot</tt> - When the link +name+ isn't provided, the
25
+ # +email_address+ is used for the link label. You can use this option to
26
+ # obfuscate the +email_address+ by substituting the . in the email with the
27
+ # string given as the value.
28
+ # * <tt>:subject</tt> - Preset the subject line of the email.
29
+ # * <tt>:body</tt> - Preset the body of the email.
30
+ # * <tt>:cc</tt> - Carbon Copy additional recipients on the email.
31
+ # * <tt>:bcc</tt> - Blind Carbon Copy additional recipients on the email.
32
+ #
33
+ # ==== Examples
34
+ # mail_to "me@domain.com"
35
+ # # => <a href="mailto:me@domain.com">me@domain.com</a>
36
+ #
37
+ # mail_to "me@domain.com", "My email", encode: "javascript"
38
+ # # => <script>eval(decodeURIComponent('%64%6f%63...%27%29%3b'))</script>
39
+ #
40
+ # mail_to "me@domain.com", "My email", encode: "hex"
41
+ # # => <a href="mailto:%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">My email</a>
42
+ #
43
+ # mail_to "me@domain.com", nil, replace_at: "_at_", replace_dot: "_dot_", class: "email"
44
+ # # => <a href="mailto:me@domain.com" class="email">me_at_domain_dot_com</a>
45
+ #
46
+ # mail_to "me@domain.com", "My email", cc: "ccaddress@domain.com",
47
+ # subject: "This is an example email"
48
+ # # => <a href="mailto:me@domain.com?cc=ccaddress@domain.com&subject=This%20is%20an%20example%20email">My email</a>
49
+ def mail_to_with_encoding(email_address, name = nil, html_options = {})
50
+ html_options.stringify_keys!
51
+ if %w[encode replace_at replace_dot].none?{ |option| html_options.has_key? option }
52
+ mail_to_without_encoding email_address, name, html_options
53
+ else
54
+ _mail_to_with_encoding email_address, name, html_options
55
+ end
56
+ end
57
+ alias_method_chain :mail_to, :encoding
58
+
59
+ private
60
+
61
+ def _mail_to_with_encoding(email_address, name = nil, html_options = {})
62
+ email_address = ERB::Util.html_escape(email_address)
63
+
64
+ encode = html_options.delete("encode").to_s
65
+
66
+ extras = %w{ cc bcc body subject }.map { |item|
67
+ option = html_options.delete(item) || next
68
+ "#{item}=#{Rack::Utils.escape_path(option)}"
69
+ }.compact
70
+ extras = extras.empty? ? '' : '?' + ERB::Util.html_escape(extras.join('&'))
71
+
72
+ email_address_obfuscated = email_address.to_str
73
+ email_address_obfuscated.gsub!(/@/, html_options.delete("replace_at")) if html_options.key?("replace_at")
74
+ email_address_obfuscated.gsub!(/\./, html_options.delete("replace_dot")) if html_options.key?("replace_dot")
75
+
76
+ case encode
77
+ when "javascript"
78
+ string = ''
79
+ set_attributes = ''
80
+ html_options.merge("href" => "mailto:#{email_address}#{extras}".html_safe).each_pair do |name,value|
81
+ set_attributes += "a.setAttribute('#{name}', '#{value}');"
82
+ end
83
+ create_link = "var script = document.getElementsByTagName('script');" +
84
+ "script = script[script.length - 1];" +
85
+ "var a = document.createElement('a');" +
86
+ "#{set_attributes}" +
87
+ "a.appendChild(document.createTextNode('#{name || email_address_obfuscated.html_safe}'));" +
88
+ "script.parentNode.insertBefore(a,script);"
89
+ create_link.each_byte do |c|
90
+ string << sprintf("%%%x", c)
91
+ end
92
+ "<script>eval(decodeURIComponent('#{string}'))</script>".html_safe
93
+ when "hex"
94
+ email_address_encoded = email_address_obfuscated.unpack('C*').map {|c|
95
+ sprintf("&#%d;", c)
96
+ }.join
97
+
98
+ string = 'mailto:'.unpack('C*').map { |c|
99
+ sprintf("&#%d;", c)
100
+ }.join + email_address.unpack('C*').map { |c|
101
+ char = c.chr
102
+ char =~ /\w/ ? sprintf("%%%x", c) : char
103
+ }.join
104
+
105
+ content_tag "a", name || email_address_encoded.html_safe, html_options.merge("href" => "#{string}#{extras}".html_safe)
106
+ else
107
+ content_tag "a", name || email_address_obfuscated.html_safe, html_options.merge("href" => "mailto:#{email_address}#{extras}".html_safe)
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,5 @@
1
+ module ActionView
2
+ module EncodedMailTo
3
+ VERSION = "1.0.0"
4
+ end
5
+ end
@@ -0,0 +1,14 @@
1
+ require "action_view/encoded_mail_to/version"
2
+
3
+ module ActionView
4
+ module EncodedMailTo
5
+ class Railtie < ::Rails::Railtie
6
+ initializer 'actionview-encoded_mail_to' do |app|
7
+ ActiveSupport.on_load(:action_view) do
8
+ require 'action_view/encoded_mail_to/mail_to_with_encoding'
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+
@@ -0,0 +1,109 @@
1
+ # encoding: utf-8
2
+
3
+ require 'minitest/autorun'
4
+ require 'rails'
5
+ require 'action_pack'
6
+ require 'action_view/helpers/capture_helper'
7
+ require 'action_view/helpers/url_helper'
8
+ require 'action_view/encoded_mail_to/mail_to_with_encoding'
9
+
10
+ class TestActionViewEncodedMailTo < MiniTest::Unit::TestCase
11
+ include ActionView::Helpers::UrlHelper
12
+
13
+ def test_initialization
14
+ [:mail_to, :mail_to_with_encoding, :mail_to_without_encoding].each do |method|
15
+ assert_includes ActionView::Helpers::UrlHelper.instance_methods, method
16
+ end
17
+ end
18
+
19
+ def test_mail_to
20
+ assert_equal %{<a href="mailto:nick@example.com">nick@example.com</a>}, mail_to("nick@example.com")
21
+ assert_equal %{<a href="mailto:nick@example.com">Nick Reed</a>}, mail_to("nick@example.com", "Nick Reed")
22
+ assert_equal %{<a class="admin" href="mailto:nick@example.com">Nick Reed</a>},
23
+ mail_to("nick@example.com", "Nick Reed", "class" => "admin")
24
+ assert_equal mail_to("nick@example.com", "Nick Reed", "class" => "admin"),
25
+ mail_to("nick@example.com", "Nick Reed", class: "admin")
26
+ end
27
+
28
+ def test_mail_to_without_encoding
29
+ assert_equal mail_to("nick@example.com", "Nick Reed"),
30
+ mail_to_without_encoding("nick@example.com", "Nick Reed")
31
+ end
32
+
33
+ def test_mail_to_with_javascript
34
+ assert_equal(
35
+ "<script>eval(decodeURIComponent('%76%61%72%20%73%63%72%69%70%74%20%3d%20%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%73%42%79%54%61%67%4e%61%6d%65%28%27%73%63%72%69%70%74%27%29%3b%73%63%72%69%70%74%20%3d%20%73%63%72%69%70%74%5b%73%63%72%69%70%74%2e%6c%65%6e%67%74%68%20%2d%20%31%5d%3b%76%61%72%20%61%20%3d%20%64%6f%63%75%6d%65%6e%74%2e%63%72%65%61%74%65%45%6c%65%6d%65%6e%74%28%27%61%27%29%3b%61%2e%73%65%74%41%74%74%72%69%62%75%74%65%28%27%68%72%65%66%27%2c%20%27%6d%61%69%6c%74%6f%3a%6d%65%40%64%6f%6d%61%69%6e%2e%63%6f%6d%27%29%3b%61%2e%61%70%70%65%6e%64%43%68%69%6c%64%28%64%6f%63%75%6d%65%6e%74%2e%63%72%65%61%74%65%54%65%78%74%4e%6f%64%65%28%27%4d%79%20%65%6d%61%69%6c%27%29%29%3b%73%63%72%69%70%74%2e%70%61%72%65%6e%74%4e%6f%64%65%2e%69%6e%73%65%72%74%42%65%66%6f%72%65%28%61%2c%73%63%72%69%70%74%29%3b'))</script>",
36
+ mail_to("me@domain.com", "My email", encode: "javascript")
37
+ )
38
+ end
39
+
40
+ def test_mail_to_with_javascript_unicode
41
+ assert_equal(
42
+ "<script>eval(decodeURIComponent('%76%61%72%20%73%63%72%69%70%74%20%3d%20%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%73%42%79%54%61%67%4e%61%6d%65%28%27%73%63%72%69%70%74%27%29%3b%73%63%72%69%70%74%20%3d%20%73%63%72%69%70%74%5b%73%63%72%69%70%74%2e%6c%65%6e%67%74%68%20%2d%20%31%5d%3b%76%61%72%20%61%20%3d%20%64%6f%63%75%6d%65%6e%74%2e%63%72%65%61%74%65%45%6c%65%6d%65%6e%74%28%27%61%27%29%3b%61%2e%73%65%74%41%74%74%72%69%62%75%74%65%28%27%68%72%65%66%27%2c%20%27%6d%61%69%6c%74%6f%3a%75%6e%69%63%6f%64%65%40%65%78%61%6d%70%6c%65%2e%63%6f%6d%27%29%3b%61%2e%61%70%70%65%6e%64%43%68%69%6c%64%28%64%6f%63%75%6d%65%6e%74%2e%63%72%65%61%74%65%54%65%78%74%4e%6f%64%65%28%27%c3%ba%6e%69%63%6f%64%65%27%29%29%3b%73%63%72%69%70%74%2e%70%61%72%65%6e%74%4e%6f%64%65%2e%69%6e%73%65%72%74%42%65%66%6f%72%65%28%61%2c%73%63%72%69%70%74%29%3b'))</script>",
43
+ mail_to("unicode@example.com", "únicode", encode: "javascript")
44
+ )
45
+ end
46
+
47
+ def test_mail_with_options
48
+ assert_equal(
49
+ %{<a href="mailto:me@example.com?cc=ccaddress%40example.com&amp;bcc=bccaddress%40example.com&amp;body=This%20is%20the%20body%20of%20the%20message.&amp;subject=This%20is%20an%20example%20email">My email</a>},
50
+ mail_to("me@example.com", "My email", cc: "ccaddress@example.com", bcc: "bccaddress@example.com", subject: "This is an example email", body: "This is the body of the message.")
51
+ )
52
+ end
53
+
54
+ def test_mail_to_with_img
55
+ assert_equal %{<a href="mailto:feedback@example.com"><img src="/feedback.png" /></a>},
56
+ mail_to('feedback@example.com', '<img src="/feedback.png" />'.html_safe)
57
+ end
58
+
59
+ def test_mail_to_with_hex
60
+ assert_equal(
61
+ %{<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">My email</a>},
62
+ mail_to("me@domain.com", "My email", encode: "hex")
63
+ )
64
+
65
+ assert_equal(
66
+ %{<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">&#109;&#101;&#64;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#99;&#111;&#109;</a>},
67
+ mail_to("me@domain.com", nil, encode: "hex")
68
+ )
69
+ end
70
+
71
+ def test_mail_to_with_replace_options
72
+ assert_equal(
73
+ %{<a href="mailto:me@domain.com">me(at)domain(dot)com</a>},
74
+ mail_to("me@domain.com", nil, replace_at: "(at)", replace_dot: "(dot)")
75
+ )
76
+
77
+ assert_equal(
78
+ %{<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">&#109;&#101;&#40;&#97;&#116;&#41;&#100;&#111;&#109;&#97;&#105;&#110;&#46;&#99;&#111;&#109;</a>},
79
+ mail_to("me@domain.com", nil, encode: "hex", replace_at: "(at)")
80
+ )
81
+
82
+ assert_equal(
83
+ %{<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">My email</a>},
84
+ mail_to("me@domain.com", "My email", encode: "hex", replace_at: "(at)")
85
+ )
86
+
87
+ assert_equal(
88
+ %{<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d">&#109;&#101;&#40;&#97;&#116;&#41;&#100;&#111;&#109;&#97;&#105;&#110;&#40;&#100;&#111;&#116;&#41;&#99;&#111;&#109;</a>},
89
+ mail_to("me@domain.com", nil, encode: "hex", replace_at: "(at)", replace_dot: "(dot)")
90
+ )
91
+
92
+ assert_equal(
93
+ %{<script>eval(decodeURIComponent('%76%61%72%20%73%63%72%69%70%74%20%3d%20%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%73%42%79%54%61%67%4e%61%6d%65%28%27%73%63%72%69%70%74%27%29%3b%73%63%72%69%70%74%20%3d%20%73%63%72%69%70%74%5b%73%63%72%69%70%74%2e%6c%65%6e%67%74%68%20%2d%20%31%5d%3b%76%61%72%20%61%20%3d%20%64%6f%63%75%6d%65%6e%74%2e%63%72%65%61%74%65%45%6c%65%6d%65%6e%74%28%27%61%27%29%3b%61%2e%73%65%74%41%74%74%72%69%62%75%74%65%28%27%68%72%65%66%27%2c%20%27%6d%61%69%6c%74%6f%3a%6d%65%40%64%6f%6d%61%69%6e%2e%63%6f%6d%27%29%3b%61%2e%61%70%70%65%6e%64%43%68%69%6c%64%28%64%6f%63%75%6d%65%6e%74%2e%63%72%65%61%74%65%54%65%78%74%4e%6f%64%65%28%27%4d%79%20%65%6d%61%69%6c%27%29%29%3b%73%63%72%69%70%74%2e%70%61%72%65%6e%74%4e%6f%64%65%2e%69%6e%73%65%72%74%42%65%66%6f%72%65%28%61%2c%73%63%72%69%70%74%29%3b'))</script>},
94
+ mail_to("me@domain.com", "My email", encode: "javascript", replace_at: "(at)", replace_dot: "(dot)")
95
+ )
96
+
97
+ assert_equal(
98
+ %{<script>eval(decodeURIComponent('%76%61%72%20%73%63%72%69%70%74%20%3d%20%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%73%42%79%54%61%67%4e%61%6d%65%28%27%73%63%72%69%70%74%27%29%3b%73%63%72%69%70%74%20%3d%20%73%63%72%69%70%74%5b%73%63%72%69%70%74%2e%6c%65%6e%67%74%68%20%2d%20%31%5d%3b%76%61%72%20%61%20%3d%20%64%6f%63%75%6d%65%6e%74%2e%63%72%65%61%74%65%45%6c%65%6d%65%6e%74%28%27%61%27%29%3b%61%2e%73%65%74%41%74%74%72%69%62%75%74%65%28%27%68%72%65%66%27%2c%20%27%6d%61%69%6c%74%6f%3a%6d%65%40%64%6f%6d%61%69%6e%2e%63%6f%6d%27%29%3b%61%2e%61%70%70%65%6e%64%43%68%69%6c%64%28%64%6f%63%75%6d%65%6e%74%2e%63%72%65%61%74%65%54%65%78%74%4e%6f%64%65%28%27%6d%65%28%61%74%29%64%6f%6d%61%69%6e%28%64%6f%74%29%63%6f%6d%27%29%29%3b%73%63%72%69%70%74%2e%70%61%72%65%6e%74%4e%6f%64%65%2e%69%6e%73%65%72%74%42%65%66%6f%72%65%28%61%2c%73%63%72%69%70%74%29%3b'))</script>},
99
+ mail_to("me@domain.com", nil, encode: "javascript", replace_at: "(at)", replace_dot: "(dot)")
100
+ )
101
+ end
102
+
103
+ def test_mail_to_returns_html_safe_string
104
+ assert mail_to("me@domain.com").html_safe?
105
+ assert mail_to("me@domain.com", "My email", encode: "javascript").html_safe?
106
+ assert mail_to("me@domain.com", "My email", encode: "hex").html_safe?
107
+ end
108
+
109
+ end
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: actionview-encoded_mail_to
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Nick Reed
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-15 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: &70108798011700 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70108798011700
25
+ - !ruby/object:Gem::Dependency
26
+ name: minitest
27
+ requirement: &70108798009140 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70108798009140
36
+ description: Rails mail_to helper with encoding (removed from core in Rails 4.0)
37
+ email: reednj77@gmail.com
38
+ executables: []
39
+ extensions: []
40
+ extra_rdoc_files: []
41
+ files:
42
+ - /Users/reednj/code/rails/actionview-encoded_mail_to/actionview-encoded_mail_to.gemspec
43
+ - /Users/reednj/code/rails/actionview-encoded_mail_to/Gemfile
44
+ - /Users/reednj/code/rails/actionview-encoded_mail_to/Gemfile.lock
45
+ - /Users/reednj/code/rails/actionview-encoded_mail_to/lib/action_view/encoded_mail_to/mail_to_with_encoding.rb
46
+ - /Users/reednj/code/rails/actionview-encoded_mail_to/lib/action_view/encoded_mail_to/version.rb
47
+ - /Users/reednj/code/rails/actionview-encoded_mail_to/lib/actionview-encoded_mail_to.rb
48
+ - /Users/reednj/code/rails/actionview-encoded_mail_to/LICENSE.txt
49
+ - /Users/reednj/code/rails/actionview-encoded_mail_to/pkg/actionview-encoded_mail_to-1.0.0.gem
50
+ - /Users/reednj/code/rails/actionview-encoded_mail_to/Rakefile
51
+ - /Users/reednj/code/rails/actionview-encoded_mail_to/README.md
52
+ - /Users/reednj/code/rails/actionview-encoded_mail_to/test/test_actionview-encoded_mail_to.rb
53
+ homepage: https://github.com/reednj77/actionview-encoded_mail_to
54
+ licenses: []
55
+ post_install_message:
56
+ rdoc_options: []
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ! '>='
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ segments:
66
+ - 0
67
+ hash: -1136833040237664497
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ segments:
75
+ - 0
76
+ hash: -1136833040237664497
77
+ requirements: []
78
+ rubyforge_project:
79
+ rubygems_version: 1.8.10
80
+ signing_key:
81
+ specification_version: 3
82
+ summary: Deprecated support for email address obfuscation within the mail_to helper
83
+ method.
84
+ test_files: []