class JadePug::ShippedCompiler
Abstraction layer for shipped engine compiler.
Public Class Methods
new(engine, version)
click to toggle source
@param engine [Jade, Pug] The Jade
or Pug
module. @param version [String]
Calls superclass method
JadePug::Compiler::new
# File lib/jade-pug/shipped-compiler.rb, line 14 def initialize(engine, version) super @execjs = compile_compiler_source(read_compiler_source(path_to_compiler_source)) end
Public Instance Methods
compile(source, options = {})
click to toggle source
Compiles template.
@param source [String, read] @param options [Hash] @return [String]
# File lib/jade-pug/shipped-compiler.rb, line 25 def compile(source, options = {}) source = prepare_source(source) options = prepare_options(options) snippet = compilation_snippet \ method: "compile#{ "Client" if options[:client] }", arguments: [source, options], locals: options.fetch(:locals, {}), options: options result = @execjs.eval(snippet) process_result(source, result, options) rescue ExecJS::ProgramError => e raise engine::CompilationError, e.message end
Protected Instance Methods
compile_compiler_source(source)
click to toggle source
Compiles the compiler from source and returns it as {ExecJS::Runtime}.
@param source [String] @return [ExecJS::Runtime]
# File lib/jade-pug/shipped-compiler.rb, line 64 def compile_compiler_source(source) ExecJS.compile(source).tap do |compiler| raise engine::CompilerError, "Failed to compile #{ engine.name } compiler" unless compiler end end
npm_package_require_snippet()
click to toggle source
Returns the JavaScript code used to access engine NPM package.
@return [String]
# File lib/jade-pug/shipped-compiler.rb, line 74 def npm_package_require_snippet engine.name.downcase end
path_to_compiler_source()
click to toggle source
Returns absolute path to the file with compiler source.
@return [String]
# File lib/jade-pug/shipped-compiler.rb, line 45 def path_to_compiler_source File.expand_path("../../../vendor/#{ engine.name.downcase }-#{ version }.min.js", __FILE__) end
read_compiler_source(path)
click to toggle source
Reads the compiler source from a file and returns it.
@param path [String] @return [String]
# File lib/jade-pug/shipped-compiler.rb, line 54 def read_compiler_source(path) raise engine::CompilerError, "Couldn't read compiler source: #{ path }" unless File.readable?(path) File.read(path) end