class EZML::TemplateEngine
Public Instance Methods
compile(template)
click to toggle source
# File lib/ezml/template_engine.rb, line 38 def compile(template) initialize_encoding(template, options[:encoding]) @precompiled = call(template) end
precompiled()
click to toggle source
# File lib/ezml/template_engine.rb, line 43 def precompiled encoding = Encoding.find(@encoding || '') return @precompiled.dup.force_encoding(encoding) if encoding == Encoding::ASCII_8BIT return @precompiled.encode(encoding) end
precompiled_with_ambles(local_names, after_preamble: '')
click to toggle source
# File lib/ezml/template_engine.rb, line 53 def precompiled_with_ambles(local_names, after_preamble: '') preamble = <<END.tr("\n", ';') begin extend EZML::Helpers _ezmlout = @ezml_buffer = EZML::Buffer.new(ezml_buffer, #{Options.new(options).for_buffer.inspect}) _erbout = _ezmlout.buffer #{after_preamble} END postamble = <<END.tr("\n", ';') #{precompiled_method_return_value} ensure @ezml_buffer = @ezml_buffer.upper if @ezml_buffer end END "#{preamble}#{locals_code(local_names)}#{precompiled}#{postamble}".dup end
precompiled_with_return_value()
click to toggle source
# File lib/ezml/template_engine.rb, line 49 def precompiled_with_return_value "#{precompiled};#{precompiled_method_return_value}".dup end
Private Instance Methods
initialize_encoding(template, given_value)
click to toggle source
# File lib/ezml/template_engine.rb, line 72 def initialize_encoding(template, given_value) if given_value @encoding = given_value else @encoding = Encoding.default_internal || template.encoding end end
inspect_obj(obj)
click to toggle source
# File lib/ezml/template_engine.rb, line 95 def inspect_obj(obj) case obj when String %Q!"#{obj.gsub(/[\x00-\x7F]+/) {|s| s.inspect[1...-1]}}"! when Symbol ":#{inspect_obj(obj.to_s)}" else obj.inspect end end
locals_code(names)
click to toggle source
# File lib/ezml/template_engine.rb, line 84 def locals_code(names) names = names.keys if Hash === names names.map do |name| # Can't use || because someone might explicitly pass in false with a symbol sym_local = "_ezml_locals[#{inspect_obj(name.to_sym)}]" str_local = "_ezml_locals[#{inspect_obj(name.to_s)}]" "#{name} = #{sym_local}.nil? ? #{str_local} : #{sym_local};" end.join end
precompiled_method_return_value()
click to toggle source
# File lib/ezml/template_engine.rb, line 80 def precompiled_method_return_value "_erbout" end