mailchimp_template 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/.rspec +2 -0
- data/Rakefile +4 -0
- data/lib/mailchimp_template/version.rb +1 -1
- data/lib/mailchimp_template.rb +16 -10
- data/mailchimp_template.gemspec +1 -0
- data/spec/mailchimp_template_spec.rb +18 -0
- data/spec/spec_helper.rb +2 -0
- metadata +22 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b76da624f0a028b0a228325af138a42513e9326b
|
4
|
+
data.tar.gz: 2e85fb1e3e25de71a3837791a271c0e9b4b44f7c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc418d22cc2ffd313994131bf910e0b61df001b04626b48e2d781e41e12c16cf24fde8ff812bebfa6f530ac785e84b3889b4023cf3979e2824fd718bbec5370a
|
7
|
+
data.tar.gz: 9584436a9abce1ed4399d29babf5fd3fdd5353fed9d3bbf5a2a7b1ab4cacecbfa29e1d88de015b6557b487eb60072ec17bfa1d7b7e291964667b25b940d52051
|
data/.rspec
ADDED
data/Rakefile
CHANGED
data/lib/mailchimp_template.rb
CHANGED
@@ -8,15 +8,27 @@ class MailchimpTemplate
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def render(merge_tags: {}, regions: {})
|
11
|
-
|
11
|
+
result = render_regions(@template, regions)
|
12
|
+
return render_merge_tags(result, merge_tags)
|
13
|
+
end
|
14
|
+
|
15
|
+
def merge_tags
|
16
|
+
@template.scan(/\*\|(?<tag_name>.+?)\|\*/).flatten
|
17
|
+
end
|
18
|
+
|
19
|
+
def render_regions(template, regions = {})
|
20
|
+
html = Nokogiri::HTML::DocumentFragment.parse(template)
|
12
21
|
html.css("*").select { |n| n.attr("mc:edit") }.each do |editable_region|
|
13
22
|
editable_region.children = Nokogiri::HTML::DocumentFragment.parse(regions[editable_region.attr("mc:edit")])
|
14
23
|
editable_region.remove_attribute("mc:edit")
|
15
24
|
end
|
16
25
|
result = html.to_s
|
26
|
+
end
|
17
27
|
|
18
|
-
|
19
|
-
|
28
|
+
def render_merge_tags(template, merge_tags = {})
|
29
|
+
template.gsub! /\*\|(?<tag_name>.+?)\|\*/ do |match|
|
30
|
+
tag_name = $~[:tag_name]
|
31
|
+
case tag_name
|
20
32
|
when /^IF:(?<cond>.+)/, /^IFNOT:(?<cond>.+)/, /^ELSEIF:(?<cond>.+)/, "ELSE:", "END:IF"
|
21
33
|
#TODO: handle conditional merge tags
|
22
34
|
match
|
@@ -32,14 +44,8 @@ class MailchimpTemplate
|
|
32
44
|
when "CURRENT_YEAR"
|
33
45
|
Date.today.year
|
34
46
|
else
|
35
|
-
merge_tags[
|
47
|
+
merge_tags[tag_name] || match
|
36
48
|
end
|
37
49
|
end
|
38
|
-
|
39
|
-
return result
|
40
|
-
end
|
41
|
-
|
42
|
-
def merge_tags
|
43
|
-
@template.scan(/\*\|(?<tag_name>.+?)\|\*/).flatten
|
44
50
|
end
|
45
51
|
end
|
data/mailchimp_template.gemspec
CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.6"
|
22
|
+
spec.add_development_dependency "rspec"
|
22
23
|
spec.add_development_dependency "rake"
|
23
24
|
spec.add_runtime_dependency "nokogiri", "~> 1.6"
|
24
25
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require File.expand_path('spec_helper', __dir__)
|
2
|
+
|
3
|
+
describe MailchimpTemplate do
|
4
|
+
it 'has a version number' do
|
5
|
+
expect(MailchimpTemplate::VERSION).not_to be nil
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'should render merge tags' do
|
9
|
+
result = MailchimpTemplate.new(nil).render_merge_tags("hello, *|MERGE|*", {"MERGE" => "world"})
|
10
|
+
expect(result).to eq "hello, world"
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should render regions' do
|
14
|
+
result = MailchimpTemplate.new(nil).render_regions("hello, <div mc:edit= 'body'>lorem ipsum</div>", {"body" => "world"})
|
15
|
+
expect(result).to eq "hello, <div>world</div>"
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mailchimp_template
|
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
|
- Steven Karas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rake
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -61,6 +75,7 @@ extensions: []
|
|
61
75
|
extra_rdoc_files: []
|
62
76
|
files:
|
63
77
|
- ".gitignore"
|
78
|
+
- ".rspec"
|
64
79
|
- Gemfile
|
65
80
|
- LICENSE.txt
|
66
81
|
- README.md
|
@@ -68,6 +83,8 @@ files:
|
|
68
83
|
- lib/mailchimp_template.rb
|
69
84
|
- lib/mailchimp_template/version.rb
|
70
85
|
- mailchimp_template.gemspec
|
86
|
+
- spec/mailchimp_template_spec.rb
|
87
|
+
- spec/spec_helper.rb
|
71
88
|
homepage: ''
|
72
89
|
licenses:
|
73
90
|
- MIT
|
@@ -92,4 +109,6 @@ rubygems_version: 2.2.2
|
|
92
109
|
signing_key:
|
93
110
|
specification_version: 4
|
94
111
|
summary: Implementation of Mailchimp Template Language
|
95
|
-
test_files:
|
112
|
+
test_files:
|
113
|
+
- spec/mailchimp_template_spec.rb
|
114
|
+
- spec/spec_helper.rb
|