html_email_creator 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.
Files changed (53) hide show
  1. data/.gitignore +2 -0
  2. data/Gemfile +4 -0
  3. data/Gemfile.lock +49 -0
  4. data/README.markdown +5 -0
  5. data/Rakefile +7 -0
  6. data/bin/html_email_creator +35 -0
  7. data/html_email_creator.gemspec +41 -0
  8. data/lib/html_email_creator/email.rb +93 -0
  9. data/lib/html_email_creator/email_creator.rb +45 -0
  10. data/lib/html_email_creator/email_version.rb +26 -0
  11. data/lib/html_email_creator/extensions.rb +46 -0
  12. data/lib/html_email_creator/filters.rb +9 -0
  13. data/lib/html_email_creator/formatter.rb +30 -0
  14. data/lib/html_email_creator/formatters/formatter.rb +31 -0
  15. data/lib/html_email_creator/formatters/html_email.rb +24 -0
  16. data/lib/html_email_creator/formatters/markdown.rb +24 -0
  17. data/lib/html_email_creator/formatters/plain_text_email.rb +22 -0
  18. data/lib/html_email_creator/formatters/unknown_formatter.rb +17 -0
  19. data/lib/html_email_creator/helper.rb +25 -0
  20. data/lib/html_email_creator/information.rb +4 -0
  21. data/lib/html_email_creator/layout.rb +15 -0
  22. data/lib/html_email_creator/processor.rb +125 -0
  23. data/lib/html_email_creator/settings.rb +95 -0
  24. data/lib/html_email_creator/tags/include_tag.rb +71 -0
  25. data/lib/html_email_creator/version.rb +3 -0
  26. data/lib/html_email_creator.rb +46 -0
  27. data/spec/fixtures/complex_with_config/.html_config.yaml +11 -0
  28. data/spec/fixtures/complex_with_config/Emails/polite_email.yaml +7 -0
  29. data/spec/fixtures/complex_with_config/Includes/Emails/love.md +1 -0
  30. data/spec/fixtures/complex_with_config/Includes/Footers/polite.md +3 -0
  31. data/spec/fixtures/complex_with_config/Layouts/.keep +0 -0
  32. data/spec/fixtures/complex_with_config/Layouts/basic.liquid +25 -0
  33. data/spec/fixtures/complex_with_config/Output/.keep +0 -0
  34. data/spec/fixtures/default_config/Emails/Newsletter/.keep +0 -0
  35. data/spec/fixtures/default_config/Layouts/.keep +0 -0
  36. data/spec/fixtures/default_config/Output/.keep +0 -0
  37. data/spec/fixtures/with_config/.html_config.yaml +11 -0
  38. data/spec/fixtures/with_config/Emails/first_email.yaml +7 -0
  39. data/spec/fixtures/with_config/Includes/Emails/barfoo.md +1 -0
  40. data/spec/fixtures/with_config/Includes/Emails/foobar.md +1 -0
  41. data/spec/fixtures/with_config/Includes/Quotes/henry_ford.txt +1 -0
  42. data/spec/fixtures/with_config/Layouts/.keep +0 -0
  43. data/spec/fixtures/with_config/Layouts/simple.liquid +7 -0
  44. data/spec/fixtures/with_config/Output/.keep +0 -0
  45. data/spec/html_email_creator/email_creator_spec.rb +119 -0
  46. data/spec/html_email_creator/email_spec.rb +29 -0
  47. data/spec/html_email_creator/formatter_spec.rb +40 -0
  48. data/spec/html_email_creator/layout_spec.rb +55 -0
  49. data/spec/html_email_creator/processor_spec.rb +111 -0
  50. data/spec/html_email_creator/settings_spec.rb +70 -0
  51. data/spec/html_email_creator/tags/include_tag_spec.rb +11 -0
  52. data/spec/spec_helper.rb +32 -0
  53. metadata +244 -0
@@ -0,0 +1,70 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
+
3
+ describe HtmlEmailCreator::Settings do
4
+
5
+ describe "default settings" do
6
+ before(:all) do
7
+ @home_directory = File.expand_path('~')
8
+ @default_settings = HtmlEmailCreator::Settings.new
9
+ end
10
+
11
+ it "should return user's home directory based email directory" do
12
+ @default_settings.emails_path.should eql(File.join(@home_directory, "Emails"))
13
+ end
14
+
15
+ it "should return user's home directory based layouts directory" do
16
+ @default_settings.layouts_path.should eql(File.join(@home_directory, "Layouts"))
17
+ end
18
+
19
+ it "should return user's home directory based output directory" do
20
+ @default_settings.output_path.should eql(File.join(@home_directory, "Output"))
21
+ end
22
+
23
+ it "should return empty CDN url" do
24
+ @default_settings.cdn_url.should eql("")
25
+ end
26
+
27
+ it "should return extension list" do
28
+ @default_settings.extension_data.should eql({})
29
+ end
30
+ end
31
+
32
+ describe "finding default directories" do
33
+ before(:all) do
34
+ @default_settings = HtmlEmailCreator::Settings.new(fixture_dir("default_config", "Emails", "Newsletter"))
35
+ end
36
+
37
+ it "should find Layout directory recursively" do
38
+ @default_settings.emails_path.should eql(fixture_dir("default_config", "Emails"))
39
+ end
40
+
41
+ it "should find Layout directory recursively" do
42
+ @default_settings.layouts_path.should eql(fixture_dir("default_config", "Layouts"))
43
+ end
44
+
45
+ it "should find Output directory recursively" do
46
+ @default_settings.output_path.should eql(fixture_dir("default_config", "Output"))
47
+ end
48
+ end
49
+
50
+ describe "finding settings from the file system" do
51
+
52
+ it "should find the configuration recursively from leaf to root" do
53
+ HtmlEmailCreator::Settings.new(fixture_dir).cdn_url.should eql("") # not found
54
+ HtmlEmailCreator::Settings.new(fixture_dir("with_config")).cdn_url.should eql("http://cdn.example.com") # found
55
+ HtmlEmailCreator::Settings.new(fixture_dir("with_config", "Layout")).cdn_url.should eql("http://cdn.example.com") # found
56
+ end
57
+
58
+ it "should find the configuration recursively from the current directory to root" do
59
+ Dir.chdir(fixture_dir("with_config"))
60
+ HtmlEmailCreator.update_settings
61
+ HtmlEmailCreator.settings.cdn_url.should eql("http://cdn.example.com") # found
62
+ end
63
+
64
+ it "should use defaults if the directory could not be found from the current directory or any root directories" do
65
+ Dir.chdir(File.dirname(__FILE__))
66
+ HtmlEmailCreator.update_settings
67
+ HtmlEmailCreator.settings.cdn_url.should eql("") # not found
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,11 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
2
+
3
+ describe HtmlEmailCreator::IncludeTag do
4
+
5
+ it "should return user's home directory based email directory" do
6
+ run_in_fixture_dir("with_config") do
7
+ Liquid::Template.parse("{% include 'Quotes/henry_ford.txt' what: 'door' %}").render({}).should == "A bore is a person who opens his door and puts his feats in it."
8
+ Liquid::Template.parse("{% include 'Quotes/henry_ford.txt' what: 'car' %}").render({}).should == "A bore is a person who opens his car and puts his feats in it."
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,32 @@
1
+ require File.join(File.dirname(__FILE__), "..", "lib", "html_email_creator")
2
+
3
+ RSpec.configure do |config|
4
+ config.color_enabled = true
5
+
6
+ config.before :each do
7
+ ARGV.replace []
8
+ end
9
+ end
10
+
11
+ def fixture_dir(*pathparts)
12
+ File.join(File.dirname(__FILE__), 'fixtures', pathparts.flatten)
13
+ end
14
+
15
+ def read_fixture(*pathparts)
16
+ IO.read(fixture_dir(pathparts))
17
+ end
18
+
19
+ def clean_fixture_output
20
+ Dir.glob(File.join(fixture_dir, "**", "Output", "**", "*.{html,txt}")).each do |file|
21
+ File.delete(file)
22
+ end
23
+ end
24
+
25
+ def run_in_fixture_dir(*pathparts, &block)
26
+ current_dir = Dir.pwd
27
+ Dir.chdir(fixture_dir(pathparts))
28
+ HtmlEmailCreator.update_settings
29
+ res = yield
30
+ Dir.chdir(current_dir)
31
+ res
32
+ end
metadata ADDED
@@ -0,0 +1,244 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: html_email_creator
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 0
8
+ - 0
9
+ version: 1.0.0
10
+ platform: ruby
11
+ authors:
12
+ - Pekka Mattila
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-11-03 00:00:00 +02:00
18
+ default_executable: html_email_creator
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: commander
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 4
30
+ - 0
31
+ - 6
32
+ version: 4.0.6
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: kramdown
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ segments:
44
+ - 0
45
+ - 13
46
+ - 3
47
+ version: 0.13.3
48
+ type: :runtime
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ name: liquid
52
+ prerelease: false
53
+ requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ segments:
59
+ - 2
60
+ - 3
61
+ - 0
62
+ version: 2.3.0
63
+ type: :runtime
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: nokogiri
67
+ prerelease: false
68
+ requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ segments:
74
+ - 1
75
+ - 5
76
+ - 0
77
+ version: 1.5.0
78
+ type: :runtime
79
+ version_requirements: *id004
80
+ - !ruby/object:Gem::Dependency
81
+ name: inline-style
82
+ prerelease: false
83
+ requirement: &id005 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ segments:
89
+ - 0
90
+ - 5
91
+ - 0
92
+ version: 0.5.0
93
+ type: :runtime
94
+ version_requirements: *id005
95
+ - !ruby/object:Gem::Dependency
96
+ name: rspec
97
+ prerelease: false
98
+ requirement: &id006 !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ segments:
104
+ - 0
105
+ version: "0"
106
+ type: :development
107
+ version_requirements: *id006
108
+ - !ruby/object:Gem::Dependency
109
+ name: rake
110
+ prerelease: false
111
+ requirement: &id007 !ruby/object:Gem::Requirement
112
+ none: false
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ segments:
117
+ - 0
118
+ - 9
119
+ - 2
120
+ version: 0.9.2
121
+ type: :development
122
+ version_requirements: *id007
123
+ description: An easy way to create HTML and plain text emails using Markdown markup and Liquid layouts.
124
+ email: pekka.mattila@gmail.com
125
+ executables:
126
+ - html_email_creator
127
+ extensions: []
128
+
129
+ extra_rdoc_files: []
130
+
131
+ files:
132
+ - .gitignore
133
+ - Gemfile
134
+ - Gemfile.lock
135
+ - README.markdown
136
+ - Rakefile
137
+ - bin/html_email_creator
138
+ - html_email_creator.gemspec
139
+ - lib/html_email_creator.rb
140
+ - lib/html_email_creator/email.rb
141
+ - lib/html_email_creator/email_creator.rb
142
+ - lib/html_email_creator/email_version.rb
143
+ - lib/html_email_creator/extensions.rb
144
+ - lib/html_email_creator/filters.rb
145
+ - lib/html_email_creator/formatter.rb
146
+ - lib/html_email_creator/formatters/formatter.rb
147
+ - lib/html_email_creator/formatters/html_email.rb
148
+ - lib/html_email_creator/formatters/markdown.rb
149
+ - lib/html_email_creator/formatters/plain_text_email.rb
150
+ - lib/html_email_creator/formatters/unknown_formatter.rb
151
+ - lib/html_email_creator/helper.rb
152
+ - lib/html_email_creator/information.rb
153
+ - lib/html_email_creator/layout.rb
154
+ - lib/html_email_creator/processor.rb
155
+ - lib/html_email_creator/settings.rb
156
+ - lib/html_email_creator/tags/include_tag.rb
157
+ - lib/html_email_creator/version.rb
158
+ - spec/fixtures/complex_with_config/.html_config.yaml
159
+ - spec/fixtures/complex_with_config/Emails/polite_email.yaml
160
+ - spec/fixtures/complex_with_config/Includes/Emails/love.md
161
+ - spec/fixtures/complex_with_config/Includes/Footers/polite.md
162
+ - spec/fixtures/complex_with_config/Layouts/.keep
163
+ - spec/fixtures/complex_with_config/Layouts/basic.liquid
164
+ - spec/fixtures/complex_with_config/Output/.keep
165
+ - spec/fixtures/default_config/Emails/Newsletter/.keep
166
+ - spec/fixtures/default_config/Layouts/.keep
167
+ - spec/fixtures/default_config/Output/.keep
168
+ - spec/fixtures/with_config/.html_config.yaml
169
+ - spec/fixtures/with_config/Emails/first_email.yaml
170
+ - spec/fixtures/with_config/Includes/Emails/barfoo.md
171
+ - spec/fixtures/with_config/Includes/Emails/foobar.md
172
+ - spec/fixtures/with_config/Includes/Quotes/henry_ford.txt
173
+ - spec/fixtures/with_config/Layouts/.keep
174
+ - spec/fixtures/with_config/Layouts/simple.liquid
175
+ - spec/fixtures/with_config/Output/.keep
176
+ - spec/html_email_creator/email_creator_spec.rb
177
+ - spec/html_email_creator/email_spec.rb
178
+ - spec/html_email_creator/formatter_spec.rb
179
+ - spec/html_email_creator/layout_spec.rb
180
+ - spec/html_email_creator/processor_spec.rb
181
+ - spec/html_email_creator/settings_spec.rb
182
+ - spec/html_email_creator/tags/include_tag_spec.rb
183
+ - spec/spec_helper.rb
184
+ has_rdoc: true
185
+ homepage: https://github.com/pekkaj/HTML-Email-Creator
186
+ licenses: []
187
+
188
+ post_install_message:
189
+ rdoc_options: []
190
+
191
+ require_paths:
192
+ - lib
193
+ required_ruby_version: !ruby/object:Gem::Requirement
194
+ none: false
195
+ requirements:
196
+ - - ">="
197
+ - !ruby/object:Gem::Version
198
+ segments:
199
+ - 1
200
+ - 9
201
+ - 2
202
+ version: 1.9.2
203
+ required_rubygems_version: !ruby/object:Gem::Requirement
204
+ none: false
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ segments:
209
+ - 0
210
+ version: "0"
211
+ requirements: []
212
+
213
+ rubyforge_project: html_email_creator
214
+ rubygems_version: 1.3.7
215
+ signing_key:
216
+ specification_version: 3
217
+ summary: An easy way to create HTML and plain text emails!
218
+ test_files:
219
+ - spec/fixtures/complex_with_config/.html_config.yaml
220
+ - spec/fixtures/complex_with_config/Emails/polite_email.yaml
221
+ - spec/fixtures/complex_with_config/Includes/Emails/love.md
222
+ - spec/fixtures/complex_with_config/Includes/Footers/polite.md
223
+ - spec/fixtures/complex_with_config/Layouts/.keep
224
+ - spec/fixtures/complex_with_config/Layouts/basic.liquid
225
+ - spec/fixtures/complex_with_config/Output/.keep
226
+ - spec/fixtures/default_config/Emails/Newsletter/.keep
227
+ - spec/fixtures/default_config/Layouts/.keep
228
+ - spec/fixtures/default_config/Output/.keep
229
+ - spec/fixtures/with_config/.html_config.yaml
230
+ - spec/fixtures/with_config/Emails/first_email.yaml
231
+ - spec/fixtures/with_config/Includes/Emails/barfoo.md
232
+ - spec/fixtures/with_config/Includes/Emails/foobar.md
233
+ - spec/fixtures/with_config/Includes/Quotes/henry_ford.txt
234
+ - spec/fixtures/with_config/Layouts/.keep
235
+ - spec/fixtures/with_config/Layouts/simple.liquid
236
+ - spec/fixtures/with_config/Output/.keep
237
+ - spec/html_email_creator/email_creator_spec.rb
238
+ - spec/html_email_creator/email_spec.rb
239
+ - spec/html_email_creator/formatter_spec.rb
240
+ - spec/html_email_creator/layout_spec.rb
241
+ - spec/html_email_creator/processor_spec.rb
242
+ - spec/html_email_creator/settings_spec.rb
243
+ - spec/html_email_creator/tags/include_tag_spec.rb
244
+ - spec/spec_helper.rb