mjml-ruby 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2cb952b58eadf7f0a4ba87bbb063b8bfef896169
4
- data.tar.gz: bc28f55db1682e4f6f2e2cd2c7b0744d605e5e27
3
+ metadata.gz: 9553ab9e944060cd775079a86da250cc18f98bd3
4
+ data.tar.gz: 96f986df41ab14afeaeff452735977e11bc98322
5
5
  SHA512:
6
- metadata.gz: 2cbcb4fbcddc99665544578481856a6a333676237e8d0b0fd9392d92cda36f0ebe85efced87449dfe17e68ef1c6513c683a1cbbe23cd3224abe2aa31d69ded03
7
- data.tar.gz: a1f19cf75ac9e4bd620fdb94fe624cef1ddcbcba27cfb260d55fe32a09d5048dba061751d80eaeaded055f62e806f8853af68199d1a3816ec5b630feb23e1d0a
6
+ metadata.gz: 86bfb367a7237eb0487aa14abdde30564af54c4ff320d15c5b1b27b98f5414f9976ce7ec46b3e20a0c4d8e07ad40d0b067309f9df099c338ce7e782c5ca9aee9
7
+ data.tar.gz: 2077acd4e9ec468ee1367e9e17f7dc73f4a4342bcf8bbce8621796873b80b34b49dd6d69de640099da6fee69c7a40fe4da512678ef8c00ecccded2090e0648c4
@@ -1,5 +1,6 @@
1
1
  require 'dry-configurable'
2
2
  require 'mjml/logger'
3
+ require 'mjml/feature'
3
4
  require 'mjml/parser'
4
5
 
5
6
  # MJML library for ruby
@@ -14,13 +15,17 @@ module MJML
14
15
  setting :bin_path
15
16
  setting :debug
16
17
  setting :logger
18
+ setting :minify_output
19
+ setting :validation_level
17
20
 
18
21
  def self.setup!
19
22
  # Init config
20
23
  configure do |config|
21
24
  config.bin_path = find_executable
25
+ config.debug = nil
22
26
  config.logger = Logger.setup!(STDOUT)
23
- config.debug = false
27
+ config.minify_output = false
28
+ config.validation_level = :skip
24
29
  end
25
30
  end
26
31
 
@@ -35,7 +40,7 @@ module MJML
35
40
  end
36
41
 
37
42
  def self.extract_executable_version
38
- ver, _status = Open3.capture2(find_executable, '-V')
43
+ ver, _status = Open3.capture2(config.bin_path, '-V')
39
44
  (ver =~ VERSION_REGEX).nil? ? nil : ver
40
45
  end
41
46
 
@@ -0,0 +1,26 @@
1
+ module MJML
2
+ # Allows to check if feature is availalbe in current mjml version
3
+ class Feature
4
+ def self.version
5
+ semver = MJML.executable_version.split('.')
6
+ @version ||= Hash[
7
+ major: semver[0].to_i,
8
+ minor: semver[1].to_i,
9
+ patch: semver[2].to_i
10
+ ]
11
+ end
12
+
13
+ def self.available?(feature_name)
14
+ case feature_name
15
+ when :validation_level
16
+ version[:major] >= 3
17
+ else
18
+ false
19
+ end
20
+ end
21
+
22
+ def self.missing?(feature_name)
23
+ !available?(feature_name)
24
+ end
25
+ end
26
+ end
@@ -5,10 +5,10 @@ module MJML
5
5
  class Logger < ::Logger
6
6
  def self.setup!(destination)
7
7
  logger = new(destination)
8
- logger.level = ::Logger::DEBUG
8
+ logger.level = ::Logger::ERROR
9
9
 
10
10
  logger.formatter = proc do |severity, datetime, _progname, msg|
11
- "[#{datetime}] #{severity} -- MJML: #{msg}" if MJML.config.debug
11
+ "[#{datetime}] #{severity} -- MJML: #{msg}\n\n"
12
12
  end
13
13
 
14
14
  logger
@@ -33,11 +33,15 @@ module MJML
33
33
  MJML.logger.debug("Partial: #{partial?(template)}")
34
34
  return template if partial?(template)
35
35
 
36
- out, err, _sts = Open3.capture3("#{mjml_bin} -is", stdin_data: template)
37
- MJML.logger.debug("Output:\n #{out};\n\n Errors:\n #{err}")
36
+ out, err, _sts = Open3.capture3(cmd, stdin_data: template)
37
+ parsed = parse_output(out)
38
+
39
+ MJML.logger.debug("Output:\n #{parsed[:output]}")
40
+ MJML.logger.error(err) unless err.empty?
41
+ MJML.logger.warn(parsed[:warnings]) unless parsed[:warnings].empty?
38
42
 
39
43
  raise InvalidTemplate unless err.empty?
40
- out
44
+ parsed[:output]
41
45
  end
42
46
 
43
47
  def partial?(template)
@@ -47,5 +51,32 @@ module MJML
47
51
  def mjml_bin
48
52
  MJML.config.bin_path
49
53
  end
54
+
55
+ def cmd
56
+ "#{mjml_bin} #{minify_output} #{validation_level} -is"
57
+ end
58
+
59
+ def minify_output
60
+ '--min' if MJML.config.minify_output
61
+ end
62
+
63
+ def validation_level
64
+ "--level=#{MJML.config.validation_level}" if MJML::Feature.available?(:validation_level)
65
+ end
66
+
67
+ def parse_output(out)
68
+ warnings = []
69
+ output = []
70
+
71
+ out.lines.each do |l|
72
+ if l.strip.start_with?('Line')
73
+ warnings << l
74
+ else
75
+ output << l
76
+ end
77
+ end
78
+
79
+ { warnings: warnings.join, output: output.join }
80
+ end
50
81
  end
51
82
  end
@@ -11,7 +11,7 @@ module MJML
11
11
 
12
12
  def call(template)
13
13
  compiled = get_handler(@base_handler).call(template)
14
- "::MJML::Parser.new.call(begin;#{compiled};end).html_safe"
14
+ "::MJML::Parser.new.call!(begin;#{compiled};end).html_safe"
15
15
  end
16
16
 
17
17
  private
@@ -1,3 +1,3 @@
1
1
  module MJML
2
- VERSION = '0.2.3'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mjml-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mykola Basov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-06 00:00:00.000000000 Z
11
+ date: 2016-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-configurable
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.7
19
+ version: 0.3.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.7
26
+ version: 0.3.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -126,6 +126,7 @@ extensions: []
126
126
  extra_rdoc_files: []
127
127
  files:
128
128
  - lib/mjml.rb
129
+ - lib/mjml/feature.rb
129
130
  - lib/mjml/logger.rb
130
131
  - lib/mjml/parser.rb
131
132
  - lib/mjml/rails/template_handler.rb
@@ -137,7 +138,7 @@ homepage: https://github.com/kolybasov/mjml-ruby
137
138
  licenses:
138
139
  - MIT
139
140
  metadata: {}
140
- post_install_message: Don't forget to run $ npm install -g mjml@^2.0
141
+ post_install_message: Don't forget to run $ npm install -g mjml@^3.0
141
142
  rdoc_options: []
142
143
  require_paths:
143
144
  - lib
@@ -153,9 +154,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
154
  version: '0'
154
155
  requirements: []
155
156
  rubyforge_project:
156
- rubygems_version: 2.5.1
157
+ rubygems_version: 2.6.7
157
158
  signing_key:
158
159
  specification_version: 4
159
160
  summary: MJML parser and template engine for Ruby
160
161
  test_files: []
161
- has_rdoc: