mjml-ruby 0.3.6 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|