mjml-ruby 0.3.6 → 0.4.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 +4 -4
- data/lib/mjml.rb +22 -19
- data/lib/mjml/parser.rb +10 -12
- data/lib/mjml/railtie.rb +3 -1
- data/lib/mjml/version.rb +1 -1
- metadata +38 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 96c4add1001653162c292dc8b6a9eb99779524e38d55d535ec0cca0254d09ffe
|
4
|
+
data.tar.gz: 0420360f77c06f1fb97c918951bdc76acc28bf803278c304664c7a05b53de939
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd94cd65669dbd8d8f2a4f923ee0cfc9c58faf46fb657c38017fce48a07267e33697134b3f125272d2f17f81a1f42892dacfdff0be76678880b25c720efb2f80
|
7
|
+
data.tar.gz: 964f3295ef5da52ccca28f983e2049e4356652600698e2d054705c317fd1d0e055fa7f83e53956bbebcacc1d7863ea84cc433df16e28beb96171be9fa36a404a
|
data/lib/mjml.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'dry-configurable'
|
2
1
|
require 'mjml/logger'
|
3
2
|
require 'mjml/feature'
|
4
3
|
require 'mjml/parser'
|
@@ -13,29 +12,32 @@ module MJML
|
|
13
12
|
VERSION_3_REGEX = /^(\d\.\d\.\d)/i
|
14
13
|
VERSION_4_REGEX = /^mjml-cli: (\d\.\d\.\d)/i
|
15
14
|
|
16
|
-
extend Dry::Configurable
|
17
15
|
# Available settings
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
16
|
+
module Config
|
17
|
+
class << self
|
18
|
+
attr_accessor(
|
19
|
+
:bin_path,
|
20
|
+
:debug,
|
21
|
+
:logger,
|
22
|
+
:minify_output,
|
23
|
+
:validation_level
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|
23
27
|
|
24
28
|
def self.setup!
|
25
29
|
# Init config
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
config.validation_level = :skip
|
32
|
-
end
|
30
|
+
Config.bin_path = find_executable
|
31
|
+
Config.debug = nil
|
32
|
+
Config.logger = Logger.setup!(STDOUT)
|
33
|
+
Config.minify_output = false
|
34
|
+
Config.validation_level = :skip
|
33
35
|
end
|
34
36
|
|
35
37
|
def self.find_executable
|
36
38
|
local_path = File.expand_path('node_modules/.bin/mjml', Dir.pwd)
|
37
39
|
return local_path if File.file?(local_path)
|
38
|
-
`/usr/bin/env
|
40
|
+
`/usr/bin/env which mjml`.strip
|
39
41
|
end
|
40
42
|
|
41
43
|
def self.executable_version
|
@@ -43,7 +45,7 @@ module MJML
|
|
43
45
|
end
|
44
46
|
|
45
47
|
def self.extract_executable_version
|
46
|
-
ver, _status = Open3.capture2(
|
48
|
+
ver, _status = Open3.capture2(Config.bin_path, '--version')
|
47
49
|
|
48
50
|
# mjml 3.x outputs version directly:
|
49
51
|
# 3.3.5
|
@@ -65,15 +67,16 @@ module MJML
|
|
65
67
|
|
66
68
|
match.nil? ? nil : match[1]
|
67
69
|
rescue Errno::ENOENT => _e
|
68
|
-
raise BinaryNotFound, "mjml binary not found for path '#{
|
70
|
+
raise BinaryNotFound, "mjml binary not found for path '#{Config.bin_path}'"
|
69
71
|
end
|
70
72
|
|
71
73
|
def self.logger
|
72
|
-
|
74
|
+
Config.logger
|
73
75
|
end
|
74
76
|
end
|
75
77
|
|
76
|
-
|
78
|
+
# Let Rails take care of the initialization...
|
79
|
+
MJML.setup! unless defined?(Rails)
|
77
80
|
|
78
81
|
require 'tilt/mjml' if defined?(Tilt)
|
79
82
|
require 'sprockets/mjml' if defined?(Sprockets)
|
data/lib/mjml/parser.rb
CHANGED
@@ -9,14 +9,11 @@ module MJML
|
|
9
9
|
ROOT_TAGS_REGEX = %r{<mjml.*>.*<\/mjml>}im
|
10
10
|
|
11
11
|
def initialize
|
12
|
-
MJML.logger.debug("Path: #{mjml_bin};" \
|
13
|
-
"Version: #{MJML.executable_version}")
|
14
12
|
raise ExecutableNotFound if MJML.executable_version.nil?
|
15
13
|
end
|
16
14
|
|
17
15
|
def call(template)
|
18
|
-
|
19
|
-
exec!
|
16
|
+
call!(template)
|
20
17
|
rescue InvalidTemplate
|
21
18
|
nil
|
22
19
|
end
|
@@ -29,20 +26,21 @@ module MJML
|
|
29
26
|
private
|
30
27
|
|
31
28
|
def exec!
|
32
|
-
MJML.logger.debug("Template:\n #{@template}")
|
33
29
|
raise InvalidTemplate if @template.empty?
|
34
30
|
|
35
|
-
MJML.logger.debug("Partial: #{partial?}")
|
36
31
|
return @template if partial?
|
37
32
|
|
38
33
|
out, err = should_get_outpout_from_file? ? output_from_file : output_from_memory
|
39
34
|
parsed = parse_output(out)
|
40
35
|
|
41
|
-
MJML.logger.debug("Output:\n #{parsed[:output]}")
|
42
36
|
MJML.logger.error(err) unless err.empty?
|
43
37
|
MJML.logger.warn(parsed[:warnings]) unless parsed[:warnings].empty?
|
44
38
|
|
45
|
-
|
39
|
+
unless err.empty?
|
40
|
+
message = [err, parsed[:warnings]].reject(&:empty?).join("\n")
|
41
|
+
raise InvalidTemplate.new(message)
|
42
|
+
end
|
43
|
+
|
46
44
|
parsed[:output]
|
47
45
|
end
|
48
46
|
|
@@ -51,7 +49,7 @@ module MJML
|
|
51
49
|
end
|
52
50
|
|
53
51
|
def mjml_bin
|
54
|
-
MJML.
|
52
|
+
MJML::Config.bin_path
|
55
53
|
end
|
56
54
|
|
57
55
|
def cmd(file_path = nil)
|
@@ -67,11 +65,11 @@ module MJML
|
|
67
65
|
end
|
68
66
|
|
69
67
|
def minify_output
|
70
|
-
'--min' if MJML.
|
68
|
+
'--min' if MJML::Config.minify_output
|
71
69
|
end
|
72
70
|
|
73
71
|
def validation_level
|
74
|
-
"--level=#{MJML.
|
72
|
+
"--level=#{MJML::Config.validation_level}" if MJML::Feature.available?(:validation_level)
|
75
73
|
end
|
76
74
|
|
77
75
|
def output_from_file
|
@@ -103,7 +101,7 @@ module MJML
|
|
103
101
|
end
|
104
102
|
end
|
105
103
|
|
106
|
-
{ warnings: warnings.join, output: output.join }
|
104
|
+
{ warnings: warnings.join("\n"), output: output.join }
|
107
105
|
end
|
108
106
|
end
|
109
107
|
end
|
data/lib/mjml/railtie.rb
CHANGED
@@ -7,10 +7,12 @@ module MJML
|
|
7
7
|
# Rails plugin for MJML ruby
|
8
8
|
class Railtie < ::Rails::Railtie
|
9
9
|
# Config
|
10
|
-
config.mjml = MJML
|
10
|
+
config.mjml = MJML::Config
|
11
11
|
|
12
12
|
# Initializers
|
13
13
|
initializer 'mjml.register_extension' do
|
14
|
+
MJML.setup!
|
15
|
+
|
14
16
|
unless Mime::Type.lookup ::MJML::MIME_TYPE
|
15
17
|
Mime::Type.register ::MJML::MIME_TYPE, :mjml
|
16
18
|
end
|
data/lib/mjml/version.rb
CHANGED
metadata
CHANGED
@@ -1,37 +1,59 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mjml-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mykola Basov
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-11-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
20
24
|
- - ">="
|
21
25
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0
|
23
|
-
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: railties
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '6'
|
34
|
+
type: :development
|
24
35
|
prerelease: false
|
25
36
|
version_requirements: !ruby/object:Gem::Requirement
|
26
37
|
requirements:
|
27
38
|
- - "~>"
|
28
39
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
30
|
-
|
40
|
+
version: '6'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: actionmailer
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
31
46
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
47
|
+
version: '6'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '6'
|
33
55
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
56
|
+
name: tzinfo-data
|
35
57
|
requirement: !ruby/object:Gem::Requirement
|
36
58
|
requirements:
|
37
59
|
- - ">="
|
@@ -124,7 +146,7 @@ dependencies:
|
|
124
146
|
- - ">="
|
125
147
|
- !ruby/object:Gem::Version
|
126
148
|
version: '9.0'
|
127
|
-
description:
|
149
|
+
description:
|
128
150
|
email:
|
129
151
|
- kolybasov@gmail.com
|
130
152
|
executables: []
|
@@ -144,7 +166,7 @@ homepage: https://github.com/kolybasov/mjml-ruby
|
|
144
166
|
licenses:
|
145
167
|
- MIT
|
146
168
|
metadata: {}
|
147
|
-
post_install_message:
|
169
|
+
post_install_message:
|
148
170
|
rdoc_options: []
|
149
171
|
require_paths:
|
150
172
|
- lib
|
@@ -159,8 +181,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
159
181
|
- !ruby/object:Gem::Version
|
160
182
|
version: '0'
|
161
183
|
requirements: []
|
162
|
-
rubygems_version: 3.1.
|
163
|
-
signing_key:
|
184
|
+
rubygems_version: 3.1.4
|
185
|
+
signing_key:
|
164
186
|
specification_version: 4
|
165
187
|
summary: MJML parser and template engine for Ruby
|
166
188
|
test_files: []
|