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 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