jekyll-email-protect 1.0.0 → 1.0.1
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.
- checksums.yaml +4 -4
- data/README.md +11 -1
- data/lib/jekyll-email-protect.rb +12 -4
- data/spec/protect_email_filter_spec.rb +27 -0
- data/spec/spec_helper.rb +42 -0
- metadata +8 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d273a3c3ef11a835e9c6c770f06f81c249f665f
|
4
|
+
data.tar.gz: 14cb77041dc95e53c7cf295b4490f0bf2c790a09
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0e8f95d5593a7e33e1394f18c984f7adaa7a6e86e124ed78394433aee209f0115618cbbdcd35f43ecc8a4ed000cd55492ba32c544de42265ed14f9f228833ef6
|
7
|
+
data.tar.gz: afa24eb781878a66dac1d1099007cb5620a36ecfad3fa933f7e6fed553cb02cd260298550ea467311fe7e24b6cb0379a31794cb0609eaf970710adf23f280c9e
|
data/README.md
CHANGED
@@ -34,7 +34,17 @@ gems:
|
|
34
34
|
In your markup, simply use the `protect_email` liquid filter made available through this plugin:
|
35
35
|
|
36
36
|
```
|
37
|
-
{{ 'example@example.com' |
|
37
|
+
{{ 'example@example.com' | encode_email }}
|
38
|
+
```
|
39
|
+
|
40
|
+
The above code will yield `%65%78%61%6D%70%6C%65@%65%78%61%6D%70%6C%65.%63%6F%6D`. Only use this filter within the `href` attribute of a given link.
|
41
|
+
|
42
|
+
## Example
|
43
|
+
|
44
|
+
The following example shows how this plugin can be used to protect the `site`'s email address:
|
45
|
+
|
46
|
+
```
|
47
|
+
<a href="mailto:{{ site.email | protect_email }}" title="Contact me">Contact me</a>
|
38
48
|
```
|
39
49
|
|
40
50
|
# Contribute
|
data/lib/jekyll-email-protect.rb
CHANGED
@@ -1,9 +1,17 @@
|
|
1
|
-
require 'addressable/uri'
|
2
|
-
|
3
1
|
module JekyllEmailProtect
|
4
2
|
module EmailProtectionFilter
|
5
|
-
|
6
|
-
|
3
|
+
|
4
|
+
# Percent-encode alphanumeric characters of an email address
|
5
|
+
def encode_email(input)
|
6
|
+
input.to_s.chars.inject("") do |result, char|
|
7
|
+
if char =~ /\p{Alnum}/
|
8
|
+
char.bytes.inject(result) do |result, byte|
|
9
|
+
result << '%%%02X' % byte
|
10
|
+
end
|
11
|
+
else
|
12
|
+
result << char
|
13
|
+
end
|
14
|
+
end
|
7
15
|
end
|
8
16
|
end
|
9
17
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe(JekyllEmailProtect::EmailProtectionFilter) do
|
4
|
+
let(:output) do
|
5
|
+
doc = doc_with_content(content)
|
6
|
+
doc.content = content
|
7
|
+
doc.output = Jekyll::Renderer.new(doc.site, doc).run
|
8
|
+
end
|
9
|
+
|
10
|
+
context "simple example address" do
|
11
|
+
let(:email) { "example@example.com" }
|
12
|
+
let(:content) { "{{ '#{email}' | encode_email }}" }
|
13
|
+
|
14
|
+
it "produces the correct percent-encoded email" do
|
15
|
+
expect(output).to match(/%65%78%61%6D%70%6C%65@%65%78%61%6D%70%6C%65\.%63%6F%6D/)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context "example address with plus and dash" do
|
20
|
+
let(:email) { "example-person+spam@example.com" }
|
21
|
+
let(:content) { "{{ '#{email}' | encode_email }}" }
|
22
|
+
|
23
|
+
it "produces the correct percent-encoded email" do
|
24
|
+
expect(output).to match(/%65%78%61%6D%70%6C%65\-%70%65%72%73%6F%6E\+%73%70%61%6D@%65%78%61%6D%70%6C%65\.%63%6F%6D/)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
TEST_DIR = File.dirname(__FILE__)
|
2
|
+
TMP_DIR = File.expand_path("../tmp", TEST_DIR)
|
3
|
+
|
4
|
+
require 'jekyll'
|
5
|
+
require File.expand_path("../lib/jekyll-email-protect.rb", TEST_DIR)
|
6
|
+
Jekyll.logger.log_level = :error
|
7
|
+
STDERR.reopen(test(?e, '/dev/null') ? '/dev/null' : 'NUL:')
|
8
|
+
|
9
|
+
RSpec.configure do |config|
|
10
|
+
config.run_all_when_everything_filtered = true
|
11
|
+
config.filter_run :focus
|
12
|
+
config.order = 'random'
|
13
|
+
|
14
|
+
def tmp_dir(*files)
|
15
|
+
File.join(TMP_DIR, *files)
|
16
|
+
end
|
17
|
+
|
18
|
+
def source_dir(*files)
|
19
|
+
tmp_dir('source', *files)
|
20
|
+
end
|
21
|
+
|
22
|
+
def dest_dir(*files)
|
23
|
+
tmp_dir('dest', *files)
|
24
|
+
end
|
25
|
+
|
26
|
+
def doc_with_content(content, opts = {})
|
27
|
+
my_site = site
|
28
|
+
Jekyll::Document.new(source_dir('_test/doc.md'), {site: my_site, collection: collection(my_site)})
|
29
|
+
end
|
30
|
+
|
31
|
+
def collection(site, label = 'test')
|
32
|
+
Jekyll::Collection.new(site, label)
|
33
|
+
end
|
34
|
+
|
35
|
+
def site(opts = {})
|
36
|
+
conf = Jekyll::Utils.deep_merge_hashes(Jekyll::Configuration::DEFAULTS, opts.merge({
|
37
|
+
"source" => source_dir,
|
38
|
+
"destination" => dest_dir
|
39
|
+
}))
|
40
|
+
Jekyll::Site.new(conf)
|
41
|
+
end
|
42
|
+
end
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-email-protect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vincent Wochnik
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: addressable
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - '>='
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 2.3.8
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - '>='
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 2.3.8
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: jekyll
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -40,20 +26,6 @@ dependencies:
|
|
40
26
|
version: '3.0'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: rspec
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ~>
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '3.0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ~>
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '3.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rake
|
57
29
|
requirement: !ruby/object:Gem::Requirement
|
58
30
|
requirements:
|
59
31
|
- - '>='
|
@@ -90,6 +62,8 @@ files:
|
|
90
62
|
- lib/jekyll-email-protect.rb
|
91
63
|
- README.md
|
92
64
|
- LICENSE.md
|
65
|
+
- spec/protect_email_filter_spec.rb
|
66
|
+
- spec/spec_helper.rb
|
93
67
|
homepage: https://github.com/vwochnik/jekyll-email-protect
|
94
68
|
licenses:
|
95
69
|
- MIT
|
@@ -102,7 +76,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
102
76
|
requirements:
|
103
77
|
- - '>='
|
104
78
|
- !ruby/object:Gem::Version
|
105
|
-
version:
|
79
|
+
version: 1.9.3
|
106
80
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
81
|
requirements:
|
108
82
|
- - '>='
|
@@ -115,4 +89,6 @@ signing_key:
|
|
115
89
|
specification_version: 4
|
116
90
|
summary: This plugin provides a simple liquid filter which converts emails into percent-encoded
|
117
91
|
strings.
|
118
|
-
test_files:
|
92
|
+
test_files:
|
93
|
+
- spec/protect_email_filter_spec.rb
|
94
|
+
- spec/spec_helper.rb
|