class Ember::Emblem::Precompiler
Public Class Methods
compile(template)
click to toggle source
# File lib/ember/emblem/precompiler.rb, line 7 def self.compile template new.compile(template) end
Public Instance Methods
compile(template)
click to toggle source
# File lib/ember/emblem/precompiler.rb, line 11 def compile template context.call precompile_function, sanitize(template) rescue ExecJS::ProgramError => ex raise Barber::PrecompilerError.new(template, ex) end
Private Instance Methods
context()
click to toggle source
# File lib/ember/emblem/precompiler.rb, line 19 def context @context ||= ExecJS.compile(source) end
emblem_source_path()
click to toggle source
# File lib/ember/emblem/precompiler.rb, line 35 def emblem_source_path File.expand_path("../../../emblem/emblem.amd.js", __FILE__) end
loader_path()
click to toggle source
# File lib/ember/emblem/precompiler.rb, line 39 def loader_path File.expand_path("../../../emblem/loader.js", __FILE__) end
precompile_function()
click to toggle source
# File lib/ember/emblem/precompiler.rb, line 23 def precompile_function "Emblem.compile" end
precompiler_path()
click to toggle source
# File lib/ember/emblem/precompiler.rb, line 43 def precompiler_path File.expand_path("../../../emblem/precompiler.js", __FILE__) end
sanitize(template)
click to toggle source
# File lib/ember/emblem/precompiler.rb, line 47 def sanitize(template) begin if template =~ /\A".+"\Z/m # Case 1 sanitize_with_json(template) else # Case 2 sanitize_with_regexp(template) end rescue JSON::ParserError # Case 3 template end end
sanitize_with_json(template)
click to toggle source
# File lib/ember/emblem/precompiler.rb, line 62 def sanitize_with_json(template) JSON.load(%Q|{"template":#{template}}|)['template'] end
sanitize_with_regexp(template)
click to toggle source
# File lib/ember/emblem/precompiler.rb, line 66 def sanitize_with_regexp(template) if template.respond_to? :gsub sanitized = template.gsub(/\\n/,"\n") sanitized = sanitized.gsub(/\\["']/, '"') sanitized else template end end
source()
click to toggle source
# File lib/ember/emblem/precompiler.rb, line 27 def source [ File.read(loader_path), File.read(emblem_source_path), File.read(precompiler_path), ].join("\n;\n") end