mjml-rails 4.4.0 → 4.4.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +9 -3
- data/lib/mjml.rb +29 -15
- data/lib/mjml/parser.rb +3 -3
- data/lib/mjml/version.rb +1 -1
- data/test/parser_test.rb +12 -9
- metadata +28 -28
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c6b32baf83ab79233e1ad36b23d7e4656f56b18e1c43f8e3c9c3ad6ac2670699
|
|
4
|
+
data.tar.gz: fba92c52f14fa3123b19e812a29c641ddbbe70be5976767ee34c602f6beaac90
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8f2157b8498a9dcd3a4ae6d25b7e8caa77b17dc41e89aa69c0824efbaba675272a33df3a082d1db89d2d40da672a4587c040250ed135b481162904e9a3be3c59
|
|
7
|
+
data.tar.gz: 996fb2afbabfb97a04d4c28a6d1c5acc1c29e728d2c3f03f48c2b04a4f8ebdbe5e0dc7101583b7eb2f43356844f319078da80d0f991945617888c3365678eb43
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data.tar.gz.sig
CHANGED
|
Binary file
|
data/README.md
CHANGED
|
@@ -66,13 +66,19 @@ Run the following command to install it:
|
|
|
66
66
|
bundle install
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
Add the MJML parser to your project with your favourite package manager:
|
|
70
70
|
|
|
71
71
|
```console
|
|
72
|
-
|
|
72
|
+
# with npm
|
|
73
|
+
npm install mjml
|
|
74
|
+
|
|
75
|
+
# with yarn
|
|
76
|
+
yarn add mjml
|
|
73
77
|
```
|
|
74
78
|
|
|
75
|
-
|
|
79
|
+
MJML-Rails falls back to a global installation of MJML but it is strongly recommended to add MJML directly to your project.
|
|
80
|
+
|
|
81
|
+
You'll need at least Node.js version 6 for MJML to function properly.
|
|
76
82
|
|
|
77
83
|
If you're using ```:haml``` or any other Rails template language, create an initializer to set it up:
|
|
78
84
|
|
data/lib/mjml.rb
CHANGED
|
@@ -18,33 +18,47 @@ module Mjml
|
|
|
18
18
|
@@validation_level = "soft"
|
|
19
19
|
|
|
20
20
|
def self.check_version(bin)
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
stdout, _, status = run_mjml('--version', mjml_bin: bin)
|
|
22
|
+
status.success? && stdout.include?("mjml-core: #{Mjml.mjml_binary_version_supported}")
|
|
23
|
+
rescue StandardError
|
|
23
24
|
false
|
|
24
25
|
end
|
|
25
26
|
|
|
27
|
+
def self.run_mjml(args, mjml_bin: nil)
|
|
28
|
+
mjml_bin ||= BIN
|
|
29
|
+
|
|
30
|
+
Open3.capture3("#{mjml_bin} #{args}")
|
|
31
|
+
end
|
|
32
|
+
|
|
26
33
|
def self.discover_mjml_bin
|
|
27
|
-
# Check for
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
installer_path = bin_path_from('npm') || bin_path_from('yarn')
|
|
33
|
-
unless installer_path
|
|
34
|
-
puts Mjml.mjml_binary_error_string
|
|
35
|
-
return nil
|
|
34
|
+
# Check for local install of MJML with yarn
|
|
35
|
+
yarn_bin = `which yarn`.chomp
|
|
36
|
+
if yarn_bin.present?
|
|
37
|
+
mjml_bin = "#{yarn_bin} run mjml"
|
|
38
|
+
return mjml_bin if check_version(mjml_bin)
|
|
36
39
|
end
|
|
37
40
|
|
|
38
|
-
|
|
39
|
-
|
|
41
|
+
# Check for a local install of MJML with npm
|
|
42
|
+
npm_bin = `which npm`.chomp
|
|
43
|
+
if npm_bin.present? && (installer_path = bin_path_from(npm_bin)).present?
|
|
44
|
+
mjml_bin = File.join(installer_path, 'mjml')
|
|
45
|
+
return mjml_bin if check_version(mjml_bin)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Check for a global install of MJML
|
|
49
|
+
mjml_bin = `which mjml`.chomp
|
|
50
|
+
return mjml_bin if mjml_bin.present? && check_version(mjml_bin)
|
|
40
51
|
|
|
41
52
|
puts Mjml.mjml_binary_error_string
|
|
42
53
|
nil
|
|
43
54
|
end
|
|
44
55
|
|
|
45
56
|
def self.bin_path_from(package_manager)
|
|
46
|
-
|
|
47
|
-
|
|
57
|
+
stdout, _, status = Open3.capture3("#{package_manager} bin")
|
|
58
|
+
|
|
59
|
+
return unless status.success?
|
|
60
|
+
|
|
61
|
+
stdout.chomp
|
|
48
62
|
rescue Errno::ENOENT # package manager is not installed
|
|
49
63
|
nil
|
|
50
64
|
end
|
data/lib/mjml/parser.rb
CHANGED
|
@@ -35,9 +35,9 @@ module Mjml
|
|
|
35
35
|
# @return [String] The result as string
|
|
36
36
|
def run(in_tmp_file, beautify=true, minify=false, validation_level="soft")
|
|
37
37
|
Tempfile.create(["out", ".html"]) do |out_tmp_file|
|
|
38
|
-
command = "
|
|
39
|
-
_,
|
|
40
|
-
raise ParseError.new(stderr.
|
|
38
|
+
command = "-r #{in_tmp_file} -o #{out_tmp_file.path} --config.beautify #{beautify} --config.minify #{minify} --config.validationLevel #{validation_level}"
|
|
39
|
+
_, stderr, status = Mjml.run_mjml(command)
|
|
40
|
+
raise ParseError.new(stderr.chomp) unless status.success?
|
|
41
41
|
out_tmp_file.read
|
|
42
42
|
end
|
|
43
43
|
end
|
data/lib/mjml/version.rb
CHANGED
data/test/parser_test.rb
CHANGED
|
@@ -21,7 +21,8 @@ describe Mjml::Parser do
|
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
it 'raises exception' do
|
|
24
|
-
|
|
24
|
+
err = expect { parser.render }.must_raise(custom_error_class)
|
|
25
|
+
expect(err.message).must_equal error.message
|
|
25
26
|
end
|
|
26
27
|
end
|
|
27
28
|
|
|
@@ -33,7 +34,7 @@ describe Mjml::Parser do
|
|
|
33
34
|
end
|
|
34
35
|
|
|
35
36
|
it 'returns empty string' do
|
|
36
|
-
parser.render.must_equal ''
|
|
37
|
+
expect(parser.render).must_equal ''
|
|
37
38
|
end
|
|
38
39
|
end
|
|
39
40
|
end
|
|
@@ -55,19 +56,21 @@ describe Mjml::Parser do
|
|
|
55
56
|
expect(Mjml.beautify).must_equal(false)
|
|
56
57
|
expect(Mjml.minify).must_equal(true)
|
|
57
58
|
expect(Mjml.validation_level).must_equal('strict')
|
|
59
|
+
|
|
60
|
+
Mjml.setup do |config|
|
|
61
|
+
config.beautify = true
|
|
62
|
+
config.minify = false
|
|
63
|
+
config.validation_level = 'soft'
|
|
64
|
+
end
|
|
58
65
|
end
|
|
59
66
|
end
|
|
60
67
|
end
|
|
61
68
|
|
|
62
69
|
describe '#run' do
|
|
63
|
-
describe 'when shell command
|
|
64
|
-
let(:error) { 'shell error' }
|
|
65
|
-
let(:stderr) { mock('stderr', eof?: false, read: error) }
|
|
66
|
-
|
|
67
|
-
before { Open3.stubs(popen3: [nil, nil, stderr, nil]) }
|
|
68
|
-
|
|
70
|
+
describe 'when shell command failed' do
|
|
69
71
|
it 'raises exception' do
|
|
70
|
-
|
|
72
|
+
err = expect { parser.run "/tmp/non_existent_file.mjml" }.must_raise(Mjml::Parser::ParseError)
|
|
73
|
+
expect(err.message).must_include 'Command line error'
|
|
71
74
|
end
|
|
72
75
|
end
|
|
73
76
|
end
|
metadata
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mjml-rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.4.
|
|
4
|
+
version: 4.4.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Simon Loffler
|
|
8
8
|
- Steven Pickles
|
|
9
|
-
autorequire:
|
|
9
|
+
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain:
|
|
12
12
|
- |
|
|
13
13
|
-----BEGIN CERTIFICATE-----
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
14
|
+
MIIEKDCCApCgAwIBAgIBATANBgkqhkiG9w0BAQsFADAfMR0wGwYDVQQDDBR5b3Vy
|
|
15
|
+
L0RDPWVtYWlsL0RDPWNvbTAeFw0yMDExMjIwNTA5MjJaFw0yMTExMjIwNTA5MjJa
|
|
16
|
+
MB8xHTAbBgNVBAMMFHlvdXIvREM9ZW1haWwvREM9Y29tMIIBojANBgkqhkiG9w0B
|
|
17
|
+
AQEFAAOCAY8AMIIBigKCAYEAmYphpc2KJNqmKAAKTE53F59mnVv2aW8r5NFDZqG0
|
|
18
|
+
DF6V8N5rdWanaMLlo1HyU9r7D1f/h7O/LnjZemvgH6MROd19Qe64GIdIPRXC/ZxM
|
|
19
|
+
cTBNC7GMoZf9LomBmg8sXnoL0Z2enUP6BV716I00EecxrEb8drtvZlRwjUgRcZrv
|
|
20
|
+
iEaanYYp1Sw3+koyOsof/xYb3Pn2TAh9UE58lbVDpf88zc74ij3Vs3+LW/k+jZzh
|
|
21
|
+
pzo7qq47XeVNGWtVDGm3dk8QLrIyQdk28B2ZRJ+HeuLEgx7ASDYFVZc05QlAjehS
|
|
22
|
+
4k37CIgF0ODDnscoSNNb6toFzaiD/kU9+ManRj871qOAMDlcX6cM4Wl08xfXZsxh
|
|
23
|
+
VgmIv7vFoSkBDw6t3xrHGD1HiYYQl2tFQsS9D/X9I+1ArChtUTSxEyN6VGP1YVd6
|
|
24
|
+
jsf4A/eMNRO6+udEQjYHontemi1xFeeyb6PDbP14oLMOls73fKvGZ3eW5uO3qCOb
|
|
25
|
+
tKhPFou/w1GgU3vR3O26Q3EZAgMBAAGjbzBtMAkGA1UdEwQCMAAwCwYDVR0PBAQD
|
|
26
|
+
AgSwMB0GA1UdDgQWBBTx6I3ZLm1G7VCtTJWWSKR2qv6x7TAZBgNVHREEEjAQgQ55
|
|
27
|
+
b3VyQGVtYWlsLmNvbTAZBgNVHRIEEjAQgQ55b3VyQGVtYWlsLmNvbTANBgkqhkiG
|
|
28
|
+
9w0BAQsFAAOCAYEAKCpNu5+MmYNrb+oOws9m8mghO4KDO53EQsfHtRcpsBxzwzV3
|
|
29
|
+
MLO4el5fMiAiv2PrULEWVyEoe3k65bEiSEQP7m7w02B02OGugXNzwbetG56gogFy
|
|
30
|
+
aJ4VJ95aiPEwDmGORLg7RmZcL/07ikDfb96ebPn3v2REYN2lWrqu4fT1MdTmA+hZ
|
|
31
|
+
vhfqJeSuWM5wNsWxA66SgbQe8BMHcsqV1CTG+Ir8FIAHzfa+c7CNke/28htRKYJV
|
|
32
|
+
6+lk55Ueov5TjjgLTUvjdqbAEtyCZpgxe2e0o3xqKh5d5YjWVQ4mSNvBsqK7UXOx
|
|
33
|
+
MGsePVBV9lnSFEJkGB3iOvavQSVUvqybF+yk6DrJR9iZtKCvAqd96PjkcFoM19dG
|
|
34
|
+
5ofv88TRZwXM9lWn4UKuekSSF1ElH3UBVDbH4zEHaOzrOvgfnZw3VteDigwfmmwF
|
|
35
|
+
lsAqKbu4nrHhtGhkwdYbflf2URJTUxXGptrnPYV7okmEg4rsykK3RAsZ6kMNdKmx
|
|
36
|
+
DcQ7RSt1TU5eck6c
|
|
37
37
|
-----END CERTIFICATE-----
|
|
38
|
-
date: 2020-
|
|
38
|
+
date: 2020-11-22 00:00:00.000000000 Z
|
|
39
39
|
dependencies: []
|
|
40
40
|
description: Render MJML + ERb template views in Rails
|
|
41
41
|
email: sighmon@sighmon.com
|
|
@@ -78,8 +78,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
78
78
|
- !ruby/object:Gem::Version
|
|
79
79
|
version: '0'
|
|
80
80
|
requirements: []
|
|
81
|
-
rubygems_version: 3.
|
|
82
|
-
signing_key:
|
|
81
|
+
rubygems_version: 3.1.4
|
|
82
|
+
signing_key:
|
|
83
83
|
specification_version: 4
|
|
84
84
|
summary: MJML + ERb templates
|
|
85
85
|
test_files:
|
metadata.gz.sig
CHANGED
|
Binary file
|