Class: Mjml::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/mjml/parser.rb

Defined Under Namespace

Classes: ParseError

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(input) ⇒ Parser

Create new parser

Parameters:

  • input (String)

    The string to transform in html



10
11
12
13
# File 'lib/mjml/parser.rb', line 10

def initialize input
  raise Mjml.mjml_binary_error_string unless mjml_bin
  @input = input
end

Instance Attribute Details

#inputObject (readonly)

Returns the value of attribute input.



5
6
7
# File 'lib/mjml/parser.rb', line 5

def input
  @input
end

Instance Method Details

#renderString

Render mjml template

Returns:

  • (String)


18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/mjml/parser.rb', line 18

def render
  in_tmp_file = Tempfile.open(["in", ".mjml"]) do |file|
    file.write(input)
    file # return tempfile from block so #unlink works later
  end
  run(in_tmp_file.path, Mjml.beautify, Mjml.minify, Mjml.validation_level)
rescue
  raise if Mjml.raise_render_exception
  ""
ensure
  in_tmp_file.unlink
end

#run(in_tmp_file, beautify = true, minify = false, validation_level = "strict") ⇒ String

Exec mjml command

Returns:

  • (String)

    The result as string



34
35
36
37
38
39
40
41
42
# File 'lib/mjml/parser.rb', line 34

def run(in_tmp_file, beautify=true, minify=false, validation_level="strict")
  Tempfile.create(["out", ".html"]) do |out_tmp_file|
    command = "-r #{in_tmp_file} -o #{out_tmp_file.path} --config.beautify #{beautify} --config.minify #{minify} --config.validationLevel #{validation_level}"
    _, stderr, status = Mjml.run_mjml(command)
    raise ParseError.new(stderr.chomp) unless status.success?
    Mjml.logger.warn(stderr.chomp) unless stderr.blank?
    out_tmp_file.read
  end
end