mailchimp_template 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bcfb5a972fbc33a6fd8eab0bda3ec2da9a440736
4
- data.tar.gz: 7790c29cfdbe7c57861ebc6cf23d598c257d2b57
3
+ metadata.gz: b76da624f0a028b0a228325af138a42513e9326b
4
+ data.tar.gz: 2e85fb1e3e25de71a3837791a271c0e9b4b44f7c
5
5
  SHA512:
6
- metadata.gz: 9b273a3c7ea7303624e89a87e0dc8d137d21fcc8840be1df928282134d1e6575a720487134e161443bc9fd1bb4f1ba824097709ce88ea6203c5e5723c92527be
7
- data.tar.gz: 53f4545ad303a40fc082978f3c385ed261ae83a84b09844a13c3324d823bba38b8fb512932594bf3fc8fb2490f6e92e616c4c01550eb8bc39009b0155999d88d
6
+ metadata.gz: fc418d22cc2ffd313994131bf910e0b61df001b04626b48e2d781e41e12c16cf24fde8ff812bebfa6f530ac785e84b3889b4023cf3979e2824fd718bbec5370a
7
+ data.tar.gz: 9584436a9abce1ed4399d29babf5fd3fdd5353fed9d3bbf5a2a7b1ab4cacecbfa29e1d88de015b6557b487eb60072ec17bfa1d7b7e291964667b25b940d52051
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/Rakefile CHANGED
@@ -1,2 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
2
3
 
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -1,3 +1,3 @@
1
1
  class MailchimpTemplate
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
@@ -8,15 +8,27 @@ class MailchimpTemplate
8
8
  end
9
9
 
10
10
  def render(merge_tags: {}, regions: {})
11
- html = Nokogiri::HTML::DocumentFragment.parse(@template)
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
- result.gsub! /\*\|(?<tag_name>.+?)\|\*/ do |match|
19
- case $~[:tag_name]
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[$~[:tag_name]] || match
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
@@ -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
@@ -0,0 +1,2 @@
1
+
2
+ require File.expand_path("../lib/mailchimp_template", __dir__)
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.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-15 00:00:00.000000000 Z
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