inkcite 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.
- checksums.yaml +7 -0
- data/LICENSE +20 -0
- data/README.md +110 -0
- data/Rakefile +8 -0
- data/assets/facebook-like.css +62 -0
- data/assets/facebook-like.js +59 -0
- data/assets/init/config.yml +97 -0
- data/assets/init/helpers.tsv +31 -0
- data/assets/init/source.html +60 -0
- data/assets/init/source.txt +6 -0
- data/bin/inkcite +6 -0
- data/inkcite.gemspec +42 -0
- data/lib/inkcite.rb +32 -0
- data/lib/inkcite/cli/base.rb +128 -0
- data/lib/inkcite/cli/build.rb +130 -0
- data/lib/inkcite/cli/init.rb +58 -0
- data/lib/inkcite/cli/preview.rb +30 -0
- data/lib/inkcite/cli/server.rb +123 -0
- data/lib/inkcite/cli/test.rb +61 -0
- data/lib/inkcite/email.rb +219 -0
- data/lib/inkcite/mailer.rb +140 -0
- data/lib/inkcite/minifier.rb +151 -0
- data/lib/inkcite/parser.rb +111 -0
- data/lib/inkcite/renderer.rb +177 -0
- data/lib/inkcite/renderer/base.rb +186 -0
- data/lib/inkcite/renderer/button.rb +168 -0
- data/lib/inkcite/renderer/div.rb +29 -0
- data/lib/inkcite/renderer/element.rb +82 -0
- data/lib/inkcite/renderer/footnote.rb +132 -0
- data/lib/inkcite/renderer/google_analytics.rb +35 -0
- data/lib/inkcite/renderer/image.rb +95 -0
- data/lib/inkcite/renderer/image_base.rb +82 -0
- data/lib/inkcite/renderer/in_browser.rb +38 -0
- data/lib/inkcite/renderer/like.rb +73 -0
- data/lib/inkcite/renderer/link.rb +243 -0
- data/lib/inkcite/renderer/litmus.rb +33 -0
- data/lib/inkcite/renderer/lorem.rb +39 -0
- data/lib/inkcite/renderer/mobile_image.rb +67 -0
- data/lib/inkcite/renderer/mobile_style.rb +40 -0
- data/lib/inkcite/renderer/mobile_toggle.rb +27 -0
- data/lib/inkcite/renderer/outlook_background.rb +48 -0
- data/lib/inkcite/renderer/partial.rb +31 -0
- data/lib/inkcite/renderer/preheader.rb +22 -0
- data/lib/inkcite/renderer/property.rb +39 -0
- data/lib/inkcite/renderer/responsive.rb +334 -0
- data/lib/inkcite/renderer/span.rb +21 -0
- data/lib/inkcite/renderer/table.rb +67 -0
- data/lib/inkcite/renderer/table_base.rb +149 -0
- data/lib/inkcite/renderer/td.rb +92 -0
- data/lib/inkcite/uploader.rb +173 -0
- data/lib/inkcite/util.rb +85 -0
- data/lib/inkcite/version.rb +3 -0
- data/lib/inkcite/view.rb +745 -0
- data/lib/inkcite/view/context.rb +38 -0
- data/lib/inkcite/view/media_query.rb +60 -0
- data/lib/inkcite/view/tag_stack.rb +38 -0
- data/test/email_spec.rb +16 -0
- data/test/parser_spec.rb +72 -0
- data/test/project/config.yml +98 -0
- data/test/project/helpers.tsv +56 -0
- data/test/project/images/inkcite.jpg +0 -0
- data/test/project/source.html +58 -0
- data/test/project/source.txt +6 -0
- data/test/renderer/button_spec.rb +45 -0
- data/test/renderer/div_spec.rb +101 -0
- data/test/renderer/element_spec.rb +31 -0
- data/test/renderer/footnote_spec.rb +57 -0
- data/test/renderer/image_spec.rb +82 -0
- data/test/renderer/link_spec.rb +84 -0
- data/test/renderer/mobile_image_spec.rb +27 -0
- data/test/renderer/mobile_style_spec.rb +37 -0
- data/test/renderer/td_spec.rb +126 -0
- data/test/renderer_spec.rb +28 -0
- data/test/view_spec.rb +15 -0
- metadata +333 -0
@@ -0,0 +1,126 @@
|
|
1
|
+
require 'minitest/spec'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'inkcite'
|
4
|
+
|
5
|
+
describe Inkcite::Renderer::Td do
|
6
|
+
|
7
|
+
before do
|
8
|
+
@view = Inkcite::Email.new('test/project/').view(:development, :email)
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'can have empty parameters' do
|
12
|
+
Inkcite::Renderer.render('{td}{/td}', @view).must_equal('<td></td>')
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'will inherit padding from its parent table' do
|
16
|
+
Inkcite::Renderer.render('{table padding=15}{td}', @view).must_equal('<table border=0 cellpadding=15 cellspacing=0><tr><td style="padding:15px">')
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'does not accept padding as an attribute' do
|
20
|
+
Inkcite::Renderer.render('{td padding=15}', @view).must_equal('<td>')
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'can inherit a font from the context' do
|
24
|
+
Inkcite::Renderer.render('{td font=default}', @view).must_equal('<td style="color:#000000;font-size:15px;font-weight:normal;line-height:19px">')
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'can inherit a font from its parent table' do
|
28
|
+
Inkcite::Renderer.render('{table font=default}{td}', @view).must_equal('<table border=0 cellpadding=0 cellspacing=0><tr><td style="color:#000000;font-size:15px;font-weight:normal;line-height:19px">')
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'can override a font inherited from its parent table' do
|
32
|
+
Inkcite::Renderer.render('{table font=default}{td}{/td}{td font=large}{/td}{/table}', @view).must_equal('<table border=0 cellpadding=0 cellspacing=0><tr><td style="color:#000000;font-size:15px;font-weight:normal;line-height:19px"></td><td style="color:#ff0000;font-family:serif;font-size:24px;font-weight:bold;line-height:24px"></td></tr></table>')
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'can have a custom font family' do
|
36
|
+
Inkcite::Renderer.render('{td font-family="Comic Sans"}', @view).must_equal('<td style="font-family:Comic Sans">')
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'can have a custom font size' do
|
40
|
+
Inkcite::Renderer.render('{td font-size=18}', @view).must_equal('<td style="font-size:18px">')
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'can have a custom font weight' do
|
44
|
+
Inkcite::Renderer.render('{td font-weight=bold}', @view).must_equal('<td style="font-weight:bold">')
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'can have a custom line height' do
|
48
|
+
Inkcite::Renderer.render('{td line-height=15}', @view).must_equal('<td style="line-height:15px">')
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'can have a specific vertical alignment' do
|
52
|
+
Inkcite::Renderer.render('{td valign=bottom}', @view).must_equal('<td valign=bottom>')
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'can inherit valign from its parent table' do
|
56
|
+
Inkcite::Renderer.render('{table valign=top}{td}', @view).must_equal('<table border=0 cellpadding=0 cellspacing=0><tr><td valign=top>')
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'can have left-aligned text' do
|
60
|
+
Inkcite::Renderer.render('{td align=left}', @view).must_equal('<td align=left style="text-align:left">')
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'can have right-aligned text' do
|
64
|
+
Inkcite::Renderer.render('{td align=right}', @view).must_equal('<td align=right>')
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'can have centered text' do
|
68
|
+
Inkcite::Renderer.render('{td align=center}', @view).must_equal('<td align=center>')
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'will inherit mobile drop from its parent table' do
|
72
|
+
Inkcite::Renderer.render('{table mobile="drop"}{td}', @view).must_equal('<table border=0 cellpadding=0 cellspacing=0 class="fill"><tr><td class="drop">')
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'will inherit mobile switch from its parent table' do
|
76
|
+
Inkcite::Renderer.render('{table mobile="switch"}{td}', @view).must_equal('<table border=0 cellpadding=0 cellspacing=0 class="fill"><tr><td class="switch">')
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'can specify switch behavior and override its parent table' do
|
80
|
+
Inkcite::Renderer.render('{table mobile="switch"}{td}{td mobile="switch-up"}', @view).must_equal('<table border=0 cellpadding=0 cellspacing=0 class="fill"><tr><td class="switch"><td class="switch-up">')
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'can have a mobile behavior and a custom mobile style simultaneously' do
|
84
|
+
Inkcite::Renderer.render('{td mobile="drop" mobile-style="border: 1px solid #f00"}', @view).must_equal('<td class="drop m1">')
|
85
|
+
@view.media_query.find_by_klass('m1').to_css.must_equal('td[class~="m1"] { border: 1px solid #f00 }')
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'can have a background color' do
|
89
|
+
Inkcite::Renderer.render('{td bgcolor=#f9c}', @view).must_equal('<td bgcolor=#ff99cc>')
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'can have a custom background color on mobile' do
|
93
|
+
Inkcite::Renderer.render('{td mobile-bgcolor=#f09}', @view).must_equal('<td class="m1">')
|
94
|
+
@view.media_query.find_by_klass('m1').to_css.must_equal('td[class~="m1"] { background-color:#ff0099 }')
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'can override background color on mobile' do
|
98
|
+
Inkcite::Renderer.render('{td bgcolor=#f00 mobile-bgcolor=#00f}', @view).must_equal('<td bgcolor=#ff0000 class="m1">')
|
99
|
+
@view.media_query.find_by_klass('m1').to_css.must_equal('td[class~="m1"] { background-color:#0000ff !important }')
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'can have a background image' do
|
103
|
+
Inkcite::Renderer.render('{td background=floor.jpg background-position=bottom}', @view).must_equal('<td style="background:url(images/floor.jpg) bottom no-repeat">')
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'can have a background image on mobile' do
|
107
|
+
Inkcite::Renderer.render('{td mobile-background-image=wall.jpg mobile-background-position=right mobile-background-repeat=repeat-y}', @view).must_equal('<td class="m1">')
|
108
|
+
@view.media_query.find_by_klass('m1').to_css.must_equal('td[class~="m1"] { background:url(images/wall.jpg) right repeat-y }')
|
109
|
+
end
|
110
|
+
|
111
|
+
it 'can override background image on mobile' do
|
112
|
+
Inkcite::Renderer.render('{td background=floor.jpg background-position=bottom mobile-background-image=sky.jpg mobile-background-position=top}', @view).must_equal('<td class="m1" style="background:url(images/floor.jpg) bottom no-repeat">')
|
113
|
+
@view.media_query.find_by_klass('m1').to_css.must_equal('td[class~="m1"] { background:url(images/sky.jpg) top no-repeat !important }')
|
114
|
+
end
|
115
|
+
|
116
|
+
it 'can disable background image on mobile' do
|
117
|
+
Inkcite::Renderer.render('{td bgcolor=#f00 background=floor.jpg background-position=bottom mobile-bgcolor=#0f0 mobile-background-image=none}', @view).must_equal('<td bgcolor=#ff0000 class="m1" style="background:#ff0000 url(images/floor.jpg) bottom no-repeat">')
|
118
|
+
@view.media_query.find_by_klass('m1').to_css.must_equal('td[class~="m1"] { background-color:#00ff00 !important;background-image:none !important }')
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'inherits background position and repeat on mobile' do
|
122
|
+
Inkcite::Renderer.render('{td background=floor.jpg background-position=bottom mobile-background-image=sky.jpg}', @view).must_equal('<td class="m1" style="background:url(images/floor.jpg) bottom no-repeat">')
|
123
|
+
@view.media_query.find_by_klass('m1').to_css.must_equal('td[class~="m1"] { background:url(images/sky.jpg) bottom no-repeat !important }')
|
124
|
+
end
|
125
|
+
|
126
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'minitest/spec'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'inkcite'
|
4
|
+
|
5
|
+
describe Inkcite::Renderer do
|
6
|
+
|
7
|
+
it 'converts #rgb to #rrggbb' do
|
8
|
+
Inkcite::Renderer.hex('#rgb').must_equal('#rrggbb')
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'converts a hash to an alphabetized parameter string' do
|
12
|
+
Inkcite::Renderer.join_hash({ :src => 'logo.png', :height => 12, :alt => '"Company Logo"' }).must_equal('alt="Company Logo" height=12 src=logo.png')
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'can render a CSS px value' do
|
16
|
+
Inkcite::Renderer.px(5).must_equal('5px')
|
17
|
+
Inkcite::Renderer.px(0).must_equal(0)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'can wrap a string in quotes' do
|
21
|
+
Inkcite::Renderer.quote('Company Logo').must_equal('"Company Logo"')
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'will not modify an expressionless string' do
|
25
|
+
Inkcite::Renderer.render('Lorem ipsum dolor sit amet, consectetur adipiscing elit.', {}).must_equal('Lorem ipsum dolor sit amet, consectetur adipiscing elit.')
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
data/test/view_spec.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'minitest/spec'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'inkcite'
|
4
|
+
|
5
|
+
describe Inkcite::View do
|
6
|
+
|
7
|
+
before do
|
8
|
+
@view = Inkcite::Email.new('test/project/').view(:development, :email)
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'converts single and double quotes to unicode' do
|
12
|
+
Inkcite::Renderer.fix_illegal_characters('“That’s what she said!”', @view).must_equal('“That’s what she said!”')
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
metadata
ADDED
@@ -0,0 +1,333 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: inkcite
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jeffrey D. Hoffman
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-06-23 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: builder
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: erubis
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: faker
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: litmus
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: mail
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: net-sftp
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rack
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rubyzip
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: thor
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - '>='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: yui-compressor
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: bundler
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ~>
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '1.1'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ~>
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '1.1'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: rake
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - '>='
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - '>='
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: minitest
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - '>='
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - '>='
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
description: An opinionated modern, responsive HTML email generator with integrated
|
210
|
+
helpers, versioning, live previews, minification and testing.
|
211
|
+
email:
|
212
|
+
- inkcite@inkceptional.com
|
213
|
+
executables:
|
214
|
+
- inkcite
|
215
|
+
extensions: []
|
216
|
+
extra_rdoc_files: []
|
217
|
+
files:
|
218
|
+
- LICENSE
|
219
|
+
- README.md
|
220
|
+
- Rakefile
|
221
|
+
- assets/facebook-like.css
|
222
|
+
- assets/facebook-like.js
|
223
|
+
- assets/init/config.yml
|
224
|
+
- assets/init/helpers.tsv
|
225
|
+
- assets/init/source.html
|
226
|
+
- assets/init/source.txt
|
227
|
+
- bin/inkcite
|
228
|
+
- inkcite.gemspec
|
229
|
+
- lib/inkcite.rb
|
230
|
+
- lib/inkcite/cli/base.rb
|
231
|
+
- lib/inkcite/cli/build.rb
|
232
|
+
- lib/inkcite/cli/init.rb
|
233
|
+
- lib/inkcite/cli/preview.rb
|
234
|
+
- lib/inkcite/cli/server.rb
|
235
|
+
- lib/inkcite/cli/test.rb
|
236
|
+
- lib/inkcite/email.rb
|
237
|
+
- lib/inkcite/mailer.rb
|
238
|
+
- lib/inkcite/minifier.rb
|
239
|
+
- lib/inkcite/parser.rb
|
240
|
+
- lib/inkcite/renderer.rb
|
241
|
+
- lib/inkcite/renderer/base.rb
|
242
|
+
- lib/inkcite/renderer/button.rb
|
243
|
+
- lib/inkcite/renderer/div.rb
|
244
|
+
- lib/inkcite/renderer/element.rb
|
245
|
+
- lib/inkcite/renderer/footnote.rb
|
246
|
+
- lib/inkcite/renderer/google_analytics.rb
|
247
|
+
- lib/inkcite/renderer/image.rb
|
248
|
+
- lib/inkcite/renderer/image_base.rb
|
249
|
+
- lib/inkcite/renderer/in_browser.rb
|
250
|
+
- lib/inkcite/renderer/like.rb
|
251
|
+
- lib/inkcite/renderer/link.rb
|
252
|
+
- lib/inkcite/renderer/litmus.rb
|
253
|
+
- lib/inkcite/renderer/lorem.rb
|
254
|
+
- lib/inkcite/renderer/mobile_image.rb
|
255
|
+
- lib/inkcite/renderer/mobile_style.rb
|
256
|
+
- lib/inkcite/renderer/mobile_toggle.rb
|
257
|
+
- lib/inkcite/renderer/outlook_background.rb
|
258
|
+
- lib/inkcite/renderer/partial.rb
|
259
|
+
- lib/inkcite/renderer/preheader.rb
|
260
|
+
- lib/inkcite/renderer/property.rb
|
261
|
+
- lib/inkcite/renderer/responsive.rb
|
262
|
+
- lib/inkcite/renderer/span.rb
|
263
|
+
- lib/inkcite/renderer/table.rb
|
264
|
+
- lib/inkcite/renderer/table_base.rb
|
265
|
+
- lib/inkcite/renderer/td.rb
|
266
|
+
- lib/inkcite/uploader.rb
|
267
|
+
- lib/inkcite/util.rb
|
268
|
+
- lib/inkcite/version.rb
|
269
|
+
- lib/inkcite/view.rb
|
270
|
+
- lib/inkcite/view/context.rb
|
271
|
+
- lib/inkcite/view/media_query.rb
|
272
|
+
- lib/inkcite/view/tag_stack.rb
|
273
|
+
- test/email_spec.rb
|
274
|
+
- test/parser_spec.rb
|
275
|
+
- test/project/config.yml
|
276
|
+
- test/project/helpers.tsv
|
277
|
+
- test/project/images/inkcite.jpg
|
278
|
+
- test/project/source.html
|
279
|
+
- test/project/source.txt
|
280
|
+
- test/renderer/button_spec.rb
|
281
|
+
- test/renderer/div_spec.rb
|
282
|
+
- test/renderer/element_spec.rb
|
283
|
+
- test/renderer/footnote_spec.rb
|
284
|
+
- test/renderer/image_spec.rb
|
285
|
+
- test/renderer/link_spec.rb
|
286
|
+
- test/renderer/mobile_image_spec.rb
|
287
|
+
- test/renderer/mobile_style_spec.rb
|
288
|
+
- test/renderer/td_spec.rb
|
289
|
+
- test/renderer_spec.rb
|
290
|
+
- test/view_spec.rb
|
291
|
+
homepage: https://github.com/inkceptional/inkcite
|
292
|
+
licenses:
|
293
|
+
- MIT
|
294
|
+
metadata: {}
|
295
|
+
post_install_message:
|
296
|
+
rdoc_options: []
|
297
|
+
require_paths:
|
298
|
+
- lib
|
299
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
300
|
+
requirements:
|
301
|
+
- - '>='
|
302
|
+
- !ruby/object:Gem::Version
|
303
|
+
version: '0'
|
304
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
305
|
+
requirements:
|
306
|
+
- - '>='
|
307
|
+
- !ruby/object:Gem::Version
|
308
|
+
version: '0'
|
309
|
+
requirements: []
|
310
|
+
rubyforge_project:
|
311
|
+
rubygems_version: 2.4.3
|
312
|
+
signing_key:
|
313
|
+
specification_version: 4
|
314
|
+
summary: Simplifying email development
|
315
|
+
test_files:
|
316
|
+
- test/email_spec.rb
|
317
|
+
- test/parser_spec.rb
|
318
|
+
- test/project/config.yml
|
319
|
+
- test/project/helpers.tsv
|
320
|
+
- test/project/images/inkcite.jpg
|
321
|
+
- test/project/source.html
|
322
|
+
- test/project/source.txt
|
323
|
+
- test/renderer/button_spec.rb
|
324
|
+
- test/renderer/div_spec.rb
|
325
|
+
- test/renderer/element_spec.rb
|
326
|
+
- test/renderer/footnote_spec.rb
|
327
|
+
- test/renderer/image_spec.rb
|
328
|
+
- test/renderer/link_spec.rb
|
329
|
+
- test/renderer/mobile_image_spec.rb
|
330
|
+
- test/renderer/mobile_style_spec.rb
|
331
|
+
- test/renderer/td_spec.rb
|
332
|
+
- test/renderer_spec.rb
|
333
|
+
- test/view_spec.rb
|