bootstrap-email 0.3.1 → 1.0.0.alpha1.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.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/bin/bootstrap-email +2 -0
  4. data/core/bootstrap-email.scss +27 -18
  5. data/core/bootstrap-head.scss +143 -0
  6. data/core/layout.html.erb +11 -0
  7. data/core/scss/_colors.scss +161 -0
  8. data/core/scss/_functions.scss +29 -0
  9. data/core/scss/_helper_groups.scss +21 -0
  10. data/core/{sass → scss}/_reboot_email.scss +7 -22
  11. data/core/scss/_selectors_for_utils.scss +100 -0
  12. data/core/scss/_utilities.scss +125 -0
  13. data/core/scss/_variables.scss +52 -0
  14. data/core/{sass → scss/components}/_alert.scss +0 -1
  15. data/core/{sass → scss/components}/_badge.scss +8 -15
  16. data/core/{sass → scss/components}/_button.scss +21 -17
  17. data/core/{sass → scss/components}/_card.scss +3 -2
  18. data/core/{sass → scss/components}/_container.scss +0 -0
  19. data/core/scss/components/_grid.scss +35 -0
  20. data/core/scss/components/_hr.scss +8 -0
  21. data/core/{sass → scss/components}/_image.scss +2 -1
  22. data/core/{sass → scss/components}/_preview.scss +0 -0
  23. data/core/{sass → scss/components}/_table.scss +0 -0
  24. data/core/scss/utilities/_background.scss +5 -0
  25. data/core/scss/utilities/_border-radius.scss +21 -0
  26. data/core/scss/utilities/_border.scss +13 -0
  27. data/core/scss/utilities/_color.scss +9 -0
  28. data/core/scss/utilities/_display.scss +7 -0
  29. data/core/scss/utilities/_sizing.scss +16 -0
  30. data/core/scss/utilities/_spacing.scss +18 -0
  31. data/core/scss/utilities/_text-decoration.scss +9 -0
  32. data/core/scss/utilities/_typography.scss +54 -0
  33. data/core/templates/col.html.erb +2 -2
  34. data/core/templates/row.html.erb +2 -2
  35. data/lib/bootstrap-email/bootstrap_email_cli.rb +91 -0
  36. data/lib/bootstrap-email/compiler.rb +118 -0
  37. data/lib/bootstrap-email/components/alert.rb +11 -0
  38. data/lib/bootstrap-email/components/align.rb +21 -0
  39. data/lib/bootstrap-email/components/badge.rb +11 -0
  40. data/lib/bootstrap-email/components/base.rb +26 -0
  41. data/lib/bootstrap-email/components/body.rb +22 -0
  42. data/lib/bootstrap-email/components/button.rb +11 -0
  43. data/lib/bootstrap-email/components/card.rb +14 -0
  44. data/lib/bootstrap-email/components/color.rb +13 -0
  45. data/lib/bootstrap-email/components/container.rb +14 -0
  46. data/lib/bootstrap-email/components/grid.rb +14 -0
  47. data/lib/bootstrap-email/components/hr.rb +12 -0
  48. data/lib/bootstrap-email/components/margin.rb +22 -0
  49. data/lib/bootstrap-email/components/padding.rb +16 -0
  50. data/lib/bootstrap-email/components/paragraph.rb +24 -0
  51. data/lib/bootstrap-email/components/spacer.rb +11 -0
  52. data/lib/bootstrap-email/components/spacing.rb +18 -0
  53. data/lib/bootstrap-email/components/table.rb +13 -0
  54. data/lib/bootstrap-email/initialize.rb +1 -0
  55. data/lib/bootstrap-email/rails/action_mailer.rb +10 -0
  56. data/lib/bootstrap-email/{engine.rb → rails/engine.rb} +0 -0
  57. data/lib/bootstrap-email/sass_cache.rb +47 -0
  58. data/lib/bootstrap-email/version.rb +3 -5
  59. data/lib/bootstrap_email.rb +27 -0
  60. metadata +76 -64
  61. data/core/head.scss +0 -269
  62. data/core/sass/_border.scss +0 -73
  63. data/core/sass/_color.scss +0 -33
  64. data/core/sass/_display.scss +0 -7
  65. data/core/sass/_functions.scss +0 -14
  66. data/core/sass/_grid.scss +0 -131
  67. data/core/sass/_hr.scss +0 -14
  68. data/core/sass/_spacing.scss +0 -100
  69. data/core/sass/_typography.scss +0 -50
  70. data/core/sass/_variables.scss +0 -150
  71. data/core/template.html.erb +0 -11
  72. data/core/templates/align-center.html.erb +0 -9
  73. data/core/templates/align-left.html.erb +0 -9
  74. data/core/templates/align-right.html.erb +0 -9
  75. data/core/templates/hr.html.erb +0 -9
  76. data/lib/assets/stylesheets/bootstrap-email.scss +0 -1
  77. data/lib/bootstrap-email.rb +0 -230
  78. data/lib/bootstrap-email/action_mailer.rb +0 -12
  79. data/lib/bootstrap-email/premailer_railtie.rb +0 -5
@@ -0,0 +1,26 @@
1
+ module BootstrapEmail
2
+ module Component
3
+ class Base
4
+ attr_reader :doc
5
+ def initialize(doc)
6
+ @doc = doc
7
+ end
8
+
9
+ def self.build(doc)
10
+ new(doc).build
11
+ end
12
+
13
+ def template(file, locals_hash = {})
14
+ locals_hash[:classes] = locals_hash[:classes].split.join(' ') if locals_hash[:classes]
15
+ namespace = OpenStruct.new(locals_hash)
16
+ template_html = File.read(File.expand_path("../../../core/templates/#{file}.html.erb", __dir__))
17
+ ERB.new(template_html).result(namespace.instance_eval { binding })
18
+ end
19
+
20
+ def each_node(css_lookup, &blk)
21
+ # sort by youngest child and traverse backwards up the tree
22
+ doc.css(css_lookup).sort_by { |n| n.ancestors.size }.reverse!.each(&blk)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,22 @@
1
+ module BootstrapEmail
2
+ module Component
3
+ class Body < Base
4
+ def build
5
+ each_node('body') do |node|
6
+ node.replace('<body>' + preview_text.to_s + template('body', classes: "#{node['class']} body", contents: node.inner_html) + '</body>')
7
+ end
8
+ end
9
+
10
+ def preview_text
11
+ preview_node = doc.at_css('preview')
12
+ return if preview_node.nil?
13
+
14
+ # apply spacing after the text max of 100 characters so it doesn't show body text
15
+ preview_node.content += '&nbsp;' * [(100 - preview_node.content.length.to_i), 0].max
16
+ node = template('div', classes: 'preview', contents: preview_node.content)
17
+ preview_node.remove
18
+ node
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,11 @@
1
+ module BootstrapEmail
2
+ module Component
3
+ class Button < Base
4
+ def build
5
+ each_node('.btn') do |node|
6
+ node.replace(template('table', classes: node['class'], contents: node.delete('class') && node.to_html))
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ module BootstrapEmail
2
+ module Component
3
+ class Card < Base
4
+ def build
5
+ each_node('.card') do |node|
6
+ node.replace(template('table', classes: node['class'], contents: node.delete('class') && node.inner_html))
7
+ end
8
+ each_node('.card-body') do |node|
9
+ node.replace(template('table', classes: node['class'], contents: node.delete('class') && node.inner_html))
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,13 @@
1
+ module BootstrapEmail
2
+ module Component
3
+ class Color < Base
4
+ def build
5
+ each_node('*[class*=bg-]') do |node|
6
+ next unless ['div'].include?(node.name) # only do automatic thing for div
7
+
8
+ node.replace(template('table', classes: "#{node['class']} w-full", contents: node.delete('class') && node.inner_html))
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ module BootstrapEmail
2
+ module Component
3
+ class Container < Base
4
+ def build
5
+ each_node('.container') do |node|
6
+ node.replace(template('container', classes: node['class'], contents: node.inner_html))
7
+ end
8
+ each_node('.container-fluid') do |node|
9
+ node.replace(template('table', classes: node['class'], contents: node.inner_html))
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module BootstrapEmail
2
+ module Component
3
+ class Grid < Base
4
+ def build
5
+ each_node('.row') do |node|
6
+ node.replace(template('row', classes: node['class'], contents: node.inner_html))
7
+ end
8
+ each_node('*[class*=col]') do |node|
9
+ node.replace(template('col', classes: node['class'], contents: node.inner_html))
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,12 @@
1
+ module BootstrapEmail
2
+ module Component
3
+ class Hr < Base
4
+ def build
5
+ each_node('hr') do |node|
6
+ default_margin = node['class'].to_s.match?(/m[tby]{1}-(lg-)?\d+/) ? '' : 'my-5'
7
+ node.replace(template('table', classes: "#{default_margin} hr #{node['class']}", contents: ''))
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,22 @@
1
+ module BootstrapEmail
2
+ module Component
3
+ class Margin < Base
4
+ def build
5
+ each_node('*[class*=my-], *[class*=mt-], *[class*=mb-]') do |node|
6
+ top_class = node['class'][/m[ty]{1}-(lg-)?(\d+)/]
7
+ bottom_class = node['class'][/m[by]{1}-(lg-)?(\d+)/]
8
+ node['class'] = node['class'].gsub(/(m[tby]{1}-(lg-)?\d+)/, '')
9
+ html = ''
10
+ if top_class
11
+ html += template('div', classes: "s-#{top_class.gsub(/m[ty]{1}-/, '')}", contents: nil)
12
+ end
13
+ html += node.to_html
14
+ if bottom_class
15
+ html += template('div', classes: "s-#{bottom_class.gsub(/m[by]{1}-/, '')}", contents: nil)
16
+ end
17
+ node.replace(html)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,16 @@
1
+ module BootstrapEmail
2
+ module Component
3
+ class Padding < Base
4
+ def build
5
+ each_node('*[class*=p-], *[class*=pt-], *[class*=pr-], *[class*=pb-], *[class*=pl-], *[class*=px-], *[class*=py-]') do |node|
6
+ next if ['table', 'td', 'a'].include?(node.name)
7
+
8
+ padding_regex = /(p[trblxy]?-\d+)/
9
+ classes = node['class'].scan(padding_regex).join(' ')
10
+ node['class'] = node['class'].gsub(padding_regex, '')
11
+ node.replace(template('table', classes: classes, contents: node.to_html))
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,24 @@
1
+ module BootstrapEmail
2
+ module Component
3
+ class Paragraph < Base
4
+ def build
5
+ each_node('p') do |node|
6
+ next if margin?(node) || space_y?(node)
7
+
8
+ node['class'] ||= ''
9
+ node['class'] += 'mb-4'
10
+ end
11
+ end
12
+
13
+ private
14
+
15
+ def margin?(node)
16
+ node['class'].to_s.match?(/m[tby]{1}-(lg-)?\d+/)
17
+ end
18
+
19
+ def space_y?(node)
20
+ node.parent['class'].to_s.match?(/space-y-(lg-)?\d+/)
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,11 @@
1
+ module BootstrapEmail
2
+ module Component
3
+ class Spacer < Base
4
+ def build
5
+ each_node('*[class*=s-]') do |node|
6
+ node.replace(template('table', classes: "#{node['class']} w-full", contents: '&nbsp;'))
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,18 @@
1
+ module BootstrapEmail
2
+ module Component
3
+ class Spacing < Base
4
+ def build
5
+ each_node('*[class*=space-y-]') do |node|
6
+ spacer = node['class'].scan(/space-y-((lg-)?\d+)/)[0][0]
7
+ # get all direct children except the first
8
+ node.xpath('./*[position()>1] | ./tbody/tr/td/*[position()>1]').each do |child|
9
+ html = ''
10
+ html += template('div', classes: "s-#{spacer}", contents: nil)
11
+ html += child.to_html
12
+ child.replace(html)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,13 @@
1
+ module BootstrapEmail
2
+ module Component
3
+ class Table < Base
4
+ def build
5
+ each_node('table') do |node|
6
+ node['border'] = 0
7
+ node['cellpadding'] = 0
8
+ node['cellspacing'] = 0
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1 @@
1
+ Premailer::Adapter.use = :nokogiri_fast
@@ -0,0 +1,10 @@
1
+ ActiveSupport.on_load(:action_mailer, {yield: true}) do |action_mailer|
2
+ action_mailer.class_eval do # To support Rails less than 6
3
+ # sit in the middle and compile the html
4
+ def bootstrap_mail(*args, &block)
5
+ bootstrap = BootstrapEmail::Compiler.new(mail(*args, &block), type: :rails)
6
+ bootstrap.perform_full_compile
7
+ end
8
+ alias make_bootstrap_mail bootstrap_mail
9
+ end
10
+ end
@@ -0,0 +1,47 @@
1
+ module BootstrapEmail
2
+ class SassCache
3
+ CACHE_DIR = File.expand_path('../../.sass-cache', __dir__)
4
+ SASS_DIR = File.expand_path('../../core', __dir__)
5
+
6
+ def self.compile(name, config_path: nil, style: :compressed)
7
+ path = "#{SASS_DIR}/#{name}"
8
+ config_file = nil
9
+
10
+ lookup_locations = ["#{name}.config.scss", "app/assets/stylesheets/#{name}.config.scss"]
11
+ locations = lookup_locations.select { |location| File.exist?(File.expand_path(location, Dir.pwd)) }
12
+
13
+ if config_path && File.exist?(config_path)
14
+ # check if custom config was passed in
15
+ config_file = File.read(config_path)
16
+ elsif locations.any?
17
+ config_file = File.read(File.expand_path(locations.first, Dir.pwd))
18
+ end
19
+
20
+ check = checksum(config_file&.gsub("//= @import #{name};", "@import '#{path}';"))
21
+ cache_path = "#{CACHE_DIR}/#{check}/#{name}.css"
22
+ if cached?(cache_path)
23
+ File.read(cache_path)
24
+ else
25
+ file = config_file.nil? ? File.read("#{path}.scss") : config_file
26
+ SassC::Engine.new(file, style: style).render.tap do |css|
27
+ Dir.mkdir(CACHE_DIR) unless File.directory?(CACHE_DIR)
28
+ Dir.mkdir("#{CACHE_DIR}/#{check}") unless File.directory?("#{CACHE_DIR}/#{check}")
29
+ File.write(cache_path, css)
30
+ puts "New css file cached for #{name}"
31
+ end
32
+ end
33
+ end
34
+
35
+ def self.checksum(config_file)
36
+ checksums = config_file.nil? ? [] : [Digest::SHA1.hexdigest(config_file)]
37
+ Dir.glob('../../core/**/*.scss', base: __dir__).each do |path|
38
+ checksums << Digest::SHA1.file(File.expand_path(path, __dir__)).hexdigest
39
+ end
40
+ Digest::SHA1.hexdigest(checksums.join)
41
+ end
42
+
43
+ def self.cached?(cache_path)
44
+ File.file?(cache_path)
45
+ end
46
+ end
47
+ end
@@ -1,7 +1,5 @@
1
1
  module BootstrapEmail
2
- module Rails
3
- VERSION = File.read(
4
- File.expand_path('../../VERSION', __dir__)
5
- ).strip
6
- end
2
+ VERSION = File.read(
3
+ File.expand_path('../../VERSION', __dir__)
4
+ ).strip.freeze
7
5
  end
@@ -0,0 +1,27 @@
1
+ require 'nokogiri'
2
+ require 'erb'
3
+ require 'ostruct'
4
+ require 'premailer'
5
+ require 'sassc'
6
+ require 'digest/sha1'
7
+ require 'css_parser'
8
+
9
+ begin
10
+ require 'rails'
11
+ rescue LoadError; end
12
+
13
+ if defined?(Rails)
14
+ require 'action_mailer'
15
+ end
16
+
17
+ require_relative 'bootstrap-email/initialize'
18
+ require_relative 'bootstrap-email/compiler'
19
+ require_relative 'bootstrap-email/sass_cache'
20
+ require_relative 'bootstrap-email/version'
21
+ require_relative 'bootstrap-email/components/base'
22
+ Dir[File.join(__dir__, 'bootstrap-email/components', '*.rb')].each { |file| require_relative file }
23
+
24
+ if defined?(Rails)
25
+ require_relative 'bootstrap-email/rails/action_mailer'
26
+ require_relative 'bootstrap-email/rails/engine'
27
+ end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bootstrap-email
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 1.0.0.alpha1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stuart Yamartino
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-10 00:00:00.000000000 Z
11
+ date: 2021-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: actionmailer
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '3'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '3'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: nokogiri
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -39,100 +25,126 @@ dependencies:
39
25
  - !ruby/object:Gem::Version
40
26
  version: '1.6'
41
27
  - !ruby/object:Gem::Dependency
42
- name: premailer-rails
28
+ name: premailer
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: '1.9'
33
+ version: '1.14'
48
34
  type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - "~>"
53
39
  - !ruby/object:Gem::Version
54
- version: '1.9'
40
+ version: '1.14'
55
41
  - !ruby/object:Gem::Dependency
56
- name: rails
42
+ name: sassc
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
- - - ">="
45
+ - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '3'
47
+ version: '2.4'
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - ">="
52
+ - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '3'
69
- description:
70
- email: stuartyamartino@gmail.com
71
- executables: []
54
+ version: '2.4'
55
+ description:
56
+ email: stu@stuyam.com
57
+ executables:
58
+ - bootstrap-email
72
59
  extensions: []
73
60
  extra_rdoc_files: []
74
61
  files:
75
62
  - VERSION
63
+ - bin/bootstrap-email
76
64
  - core/bootstrap-email.scss
77
- - core/head.scss
78
- - core/sass/_alert.scss
79
- - core/sass/_badge.scss
80
- - core/sass/_border.scss
81
- - core/sass/_button.scss
82
- - core/sass/_card.scss
83
- - core/sass/_color.scss
84
- - core/sass/_container.scss
85
- - core/sass/_display.scss
86
- - core/sass/_functions.scss
87
- - core/sass/_grid.scss
88
- - core/sass/_hr.scss
89
- - core/sass/_image.scss
90
- - core/sass/_preview.scss
91
- - core/sass/_reboot_email.scss
92
- - core/sass/_spacing.scss
93
- - core/sass/_table.scss
94
- - core/sass/_typography.scss
95
- - core/sass/_variables.scss
96
- - core/template.html.erb
97
- - core/templates/align-center.html.erb
98
- - core/templates/align-left.html.erb
99
- - core/templates/align-right.html.erb
65
+ - core/bootstrap-head.scss
66
+ - core/layout.html.erb
67
+ - core/scss/_colors.scss
68
+ - core/scss/_functions.scss
69
+ - core/scss/_helper_groups.scss
70
+ - core/scss/_reboot_email.scss
71
+ - core/scss/_selectors_for_utils.scss
72
+ - core/scss/_utilities.scss
73
+ - core/scss/_variables.scss
74
+ - core/scss/components/_alert.scss
75
+ - core/scss/components/_badge.scss
76
+ - core/scss/components/_button.scss
77
+ - core/scss/components/_card.scss
78
+ - core/scss/components/_container.scss
79
+ - core/scss/components/_grid.scss
80
+ - core/scss/components/_hr.scss
81
+ - core/scss/components/_image.scss
82
+ - core/scss/components/_preview.scss
83
+ - core/scss/components/_table.scss
84
+ - core/scss/utilities/_background.scss
85
+ - core/scss/utilities/_border-radius.scss
86
+ - core/scss/utilities/_border.scss
87
+ - core/scss/utilities/_color.scss
88
+ - core/scss/utilities/_display.scss
89
+ - core/scss/utilities/_sizing.scss
90
+ - core/scss/utilities/_spacing.scss
91
+ - core/scss/utilities/_text-decoration.scss
92
+ - core/scss/utilities/_typography.scss
100
93
  - core/templates/body.html.erb
101
94
  - core/templates/col.html.erb
102
95
  - core/templates/container.html.erb
103
96
  - core/templates/div.html.erb
104
- - core/templates/hr.html.erb
105
97
  - core/templates/row.html.erb
106
98
  - core/templates/table-left.html.erb
107
99
  - core/templates/table.html.erb
108
- - lib/assets/stylesheets/bootstrap-email.scss
109
- - lib/bootstrap-email.rb
110
- - lib/bootstrap-email/action_mailer.rb
111
- - lib/bootstrap-email/engine.rb
112
- - lib/bootstrap-email/premailer_railtie.rb
100
+ - lib/bootstrap-email/bootstrap_email_cli.rb
101
+ - lib/bootstrap-email/compiler.rb
102
+ - lib/bootstrap-email/components/alert.rb
103
+ - lib/bootstrap-email/components/align.rb
104
+ - lib/bootstrap-email/components/badge.rb
105
+ - lib/bootstrap-email/components/base.rb
106
+ - lib/bootstrap-email/components/body.rb
107
+ - lib/bootstrap-email/components/button.rb
108
+ - lib/bootstrap-email/components/card.rb
109
+ - lib/bootstrap-email/components/color.rb
110
+ - lib/bootstrap-email/components/container.rb
111
+ - lib/bootstrap-email/components/grid.rb
112
+ - lib/bootstrap-email/components/hr.rb
113
+ - lib/bootstrap-email/components/margin.rb
114
+ - lib/bootstrap-email/components/padding.rb
115
+ - lib/bootstrap-email/components/paragraph.rb
116
+ - lib/bootstrap-email/components/spacer.rb
117
+ - lib/bootstrap-email/components/spacing.rb
118
+ - lib/bootstrap-email/components/table.rb
119
+ - lib/bootstrap-email/initialize.rb
120
+ - lib/bootstrap-email/rails/action_mailer.rb
121
+ - lib/bootstrap-email/rails/engine.rb
122
+ - lib/bootstrap-email/sass_cache.rb
113
123
  - lib/bootstrap-email/version.rb
124
+ - lib/bootstrap_email.rb
114
125
  homepage: https://bootstrapemail.com
115
126
  licenses:
116
127
  - MIT
117
128
  metadata: {}
118
- post_install_message:
129
+ post_install_message:
119
130
  rdoc_options: []
120
131
  require_paths:
121
132
  - lib
122
133
  required_ruby_version: !ruby/object:Gem::Requirement
123
134
  requirements:
124
- - - "~>"
135
+ - - ">="
125
136
  - !ruby/object:Gem::Version
126
137
  version: '2.0'
127
138
  required_rubygems_version: !ruby/object:Gem::Requirement
128
139
  requirements:
129
- - - ">="
140
+ - - ">"
130
141
  - !ruby/object:Gem::Version
131
- version: '0'
142
+ version: 1.3.1
132
143
  requirements: []
133
144
  rubygems_version: 3.0.3
134
- signing_key:
145
+ signing_key:
135
146
  specification_version: 4
136
- summary: Bootstrap 4 stylesheet, compiler, and inliner for responsive and consistent
137
- emails with the Bootstrap syntax you know and love.
147
+ summary: 'Bootstrap 5 stylesheet, compiler, and inliner for responsive and consistent
148
+ emails with the Bootstrap syntax you know and love. Support: command line, ruby,
149
+ rails'
138
150
  test_files: []