bootstrap-email 1.0.0 → 1.1.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
  SHA256:
3
- metadata.gz: f0363b6b03e3d4fbca8e0e52c55c2a3120671c720807fb970f96c2a711bedc60
4
- data.tar.gz: 8462e35921bcfe274abed980d895e1ca57fc06f30d91e8c70ff15f9355175ef5
3
+ metadata.gz: f3f5b4d09dc80df4d877dfc08c41130028dd2d2ac7b4ea2ab1bbc5a43dbd8adf
4
+ data.tar.gz: 6ea8c81c6262d1fffb2ac9bb46b7106df7d17ecac8a238e13e104d646cfaa7c7
5
5
  SHA512:
6
- metadata.gz: 50e8c9a0967f48e016b24cb8f46f92e5ff4fb3b8682b23131bea81cd73d6aec5334c6098c77ce2ecf1a811acc0f459c8feae122bfb997815fc955c2a29a4525d
7
- data.tar.gz: 68650d469df9644d5c1c9f2ad990ee33697f297382c9f81111f5553d01a14c7071de409a82ab5353178a961397d9e496dd30aaf42b5d99b1c9e2bcb86450bbcb
6
+ metadata.gz: 3621e262c91411d799672af6ce5e0aae3d2425effe4014a5744a8c2410a6c476084debe2b24716df50b2416ac328854927f521318a7b82c2c9e81e918b31845f
7
+ data.tar.gz: 480ea67acfa153d86e447930b03880096e6352a9394f3c07af3bdc812b9d3e8a9c620963ae3cc028641545992a24734b15afdcb0e0a141f23b4a4a9182451824
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.1
@@ -88,6 +88,9 @@ table:not([class^=s-]) {
88
88
  }
89
89
  }
90
90
  }
91
+ .row-responsive.row {
92
+ margin-right: 0 !important;
93
+ }
91
94
 
92
95
  // Stack Gap
93
96
  @each $space, $value in $spacers {
data/core/layout.html.erb CHANGED
@@ -2,8 +2,8 @@
2
2
  <html>
3
3
  <head>
4
4
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5
- <meta name="x-apple-disable-message-reformatting">
6
5
  <meta http-equiv="x-ua-compatible" content="ie=edge">
6
+ <meta name="x-apple-disable-message-reformatting">
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1">
8
8
  <meta name="format-detection" content="telephone=no, date=no, address=no, email=no">
9
9
  </head>
@@ -85,12 +85,15 @@ module BootstrapEmail
85
85
 
86
86
  def configure_html!
87
87
  BootstrapEmail::Converter::HeadStyle.build(doc)
88
+ BootstrapEmail::Converter::AddMissingMetaTags.build(doc)
88
89
  BootstrapEmail::Converter::VersionComment.build(doc)
89
90
  end
90
91
 
91
92
  def finalize_document!
92
93
  html = doc.to_html(encoding: 'US-ASCII')
93
- html = BootstrapEmail::Converter::ForceEncoding.replace(html)
94
+ BootstrapEmail::Converter::SupportUrlTokens.replace(html)
95
+ BootstrapEmail::Converter::ForceEncoding.replace(html)
96
+ BootstrapEmail::Converter::BeautifyHTML.replace(html)
94
97
  case type
95
98
  when :rails
96
99
  (@mail.html_part || @mail).body = html
@@ -0,0 +1,21 @@
1
+ module BootstrapEmail
2
+ module Converter
3
+ class AddMissingMetaTags < Base
4
+ META_TAGS = [
5
+ {query: 'meta[http-equiv="Content-Type"]' , code: '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">'},
6
+ {query: 'meta[http-equiv="x-ua-compatible"]', code: '<meta http-equiv="x-ua-compatible" content="ie=edge">'},
7
+ {query: 'meta[name="x-apple-disable-message-reformatting"]', code: '<meta name="x-apple-disable-message-reformatting">'},
8
+ {query: 'meta[name="viewport"]', code: '<meta name="viewport" content="width=device-width, initial-scale=1">'},
9
+ {query: 'meta[name="format-detection"]', code: '<meta name="format-detection" content="telephone=no, date=no, address=no, email=no">'}
10
+ ].reverse.freeze
11
+
12
+ def build
13
+ META_TAGS.each do |tag_hash|
14
+ unless doc.at_css(tag_hash[:query])
15
+ doc.at_css('head').prepend_child(tag_hash[:code])
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -36,7 +36,8 @@ module BootstrapEmail
36
36
 
37
37
  def add_class(node, class_name)
38
38
  node['class'] ||= ''
39
- node['class'] += node['class'].length.zero? ? class_name : " #{class_name}"
39
+ # remove double spaces and strip white space from ends
40
+ node['class'] = "#{node['class']} #{class_name}".gsub(/\s+/, ' ').strip
40
41
  end
41
42
 
42
43
  def margin?(node)
@@ -0,0 +1,10 @@
1
+ module BootstrapEmail
2
+ module Converter
3
+ class BeautifyHTML < Base
4
+ def self.replace(html)
5
+ # Pretty print format the HTML string and add a trailing newline
6
+ html.replace(HtmlBeautifier.beautify(html) + "\n")
7
+ end
8
+ end
9
+ end
10
+ end
@@ -4,7 +4,7 @@ module BootstrapEmail
4
4
  def self.replace(html)
5
5
  # force utf-8 character encoded in iOS Mail: https://github.com/bootstrap-email/bootstrap-email/issues/50
6
6
  # this needs to be done after the document has been outputted to a ascii string so it doesn't get converted
7
- html.sub(
7
+ html.sub!(
8
8
  '<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">',
9
9
  '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">'
10
10
  )
@@ -3,6 +3,9 @@ module BootstrapEmail
3
3
  class Grid < Base
4
4
  def build
5
5
  each_node('.row') do |node|
6
+ if node.at("./*[contains(@class, 'col-lg-')]")
7
+ add_class(node, 'row-responsive')
8
+ end
6
9
  node.replace(template('div', classes: node['class'], contents: template('table-to-tr', contents: node.inner_html)))
7
10
  end
8
11
  each_node('*[class*=col]') do |node|
@@ -0,0 +1,17 @@
1
+ module BootstrapEmail
2
+ module Converter
3
+ class SupportUrlTokens < Base
4
+ OPEN_BRACKETS = CGI.escape('{{').freeze
5
+ CLOSE_BRACKETS = CGI.escape('}}').freeze
6
+
7
+ def self.replace(html)
8
+ regex = /((href|src)=(\"|\'))((#{Regexp.quote(OPEN_BRACKETS)}).*?(#{Regexp.quote(CLOSE_BRACKETS)}))(\"|\')/
9
+ if regex.match?(html)
10
+ html.gsub!(regex) do |match|
11
+ "#{$1}#{CGI.unescape($4)}#{$7}"
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -8,6 +8,7 @@ ActiveSupport.on_load(:action_mailer, {yield: true}) do |action_mailer|
8
8
  bootstrap = BootstrapEmail::Compiler.new(mail_message, type: :rails)
9
9
  bootstrap.perform_full_compile
10
10
  end
11
+ mail_message
11
12
  end
12
13
  alias bootstrap_email bootstrap_mail
13
14
  alias make_bootstrap_mail bootstrap_mail
@@ -6,6 +6,7 @@ require 'sassc'
6
6
  require 'digest/sha1'
7
7
  require 'css_parser'
8
8
  require 'fileutils'
9
+ require 'htmlbeautifier'
9
10
 
10
11
  begin
11
12
  require 'rails'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bootstrap-email
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stuart Yamartino
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-17 00:00:00.000000000 Z
11
+ date: 2021-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '2.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: htmlbeautifier
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.3'
55
69
  description:
56
70
  email: stu@stuyam.com
57
71
  executables:
@@ -105,10 +119,12 @@ files:
105
119
  - lib/bootstrap-email/bootstrap_email_cli.rb
106
120
  - lib/bootstrap-email/compiler.rb
107
121
  - lib/bootstrap-email/config.rb
122
+ - lib/bootstrap-email/converters/add_missing_meta_tags.rb
108
123
  - lib/bootstrap-email/converters/alert.rb
109
124
  - lib/bootstrap-email/converters/align.rb
110
125
  - lib/bootstrap-email/converters/badge.rb
111
126
  - lib/bootstrap-email/converters/base.rb
127
+ - lib/bootstrap-email/converters/beautify_html.rb
112
128
  - lib/bootstrap-email/converters/block.rb
113
129
  - lib/bootstrap-email/converters/body.rb
114
130
  - lib/bootstrap-email/converters/button.rb
@@ -126,6 +142,7 @@ files:
126
142
  - lib/bootstrap-email/converters/spacer.rb
127
143
  - lib/bootstrap-email/converters/spacing.rb
128
144
  - lib/bootstrap-email/converters/stack.rb
145
+ - lib/bootstrap-email/converters/support_url_tokens.rb
129
146
  - lib/bootstrap-email/converters/table.rb
130
147
  - lib/bootstrap-email/converters/version_comment.rb
131
148
  - lib/bootstrap-email/erb.rb
@@ -156,7 +173,7 @@ requirements: []
156
173
  rubygems_version: 3.0.3
157
174
  signing_key:
158
175
  specification_version: 4
159
- summary: 'Bootstrap 5 stylesheet, compiler, and inliner for responsive and consistent
176
+ summary: 'Bootstrap 5+ stylesheet, compiler, and inliner for responsive and consistent
160
177
  emails with the Bootstrap syntax you know and love. Support: command line, ruby,
161
178
  rails'
162
179
  test_files: []