lib/mustache_render/mustache.rb in mustache_render-0.0.12 vs lib/mustache_render/mustache.rb in mustache_render-0.0.13

- old
+ new

@@ -1,8 +1,9 @@ # -*- encoding : utf-8 -*- require 'mustache_render/mustache/template' require 'mustache_render/mustache/context' +require 'mustache_render/mustache/data' module MustacheRender class Mustache def self.render(*args) new.render(*args) @@ -22,18 +23,18 @@ impl_logger :level => :debug, :operation => 'MustacheRender::Mustache.render' do impl_render data, ctx end end - # 片段树 + # TODO: 语法检查,片段树 def partials_tree end # Context accessors. # - # view = Mustache.new + # view = ::MustacheRender::Mustache.new # view[:name] = "Jon" # view.template = "Hi, {{name}}!" # view.render # => "Hi, Jon!" def [](key) context[key.to_sym] @@ -145,11 +146,10 @@ # reading templates from a database. It will be rendered by the # context, so all you need to do is return a string. def partial(name) name = self.class.generate_template_name name, config.file_template_extension - # return self.read_template_from_media name, media @_cached_partials ||= {} (@_cached_partials[media] ||= {})[name] ||= self.read_template_from_media name, media end ## def self.partial_cache_key(name, media) @@ -192,60 +192,10 @@ # Returns a String def escapeHTML(str) CGI.escapeHTML(str) end - # - # Private API - # - - # When given a symbol or string representing a class, will try to produce an - # appropriate view class. - # e.g. - # Mustache.view_namespace = Hurl::Views - # Mustache.view_class(:Partial) # => Hurl::Views::Partial - def self.view_class(name) - if name != classify(name.to_s) - name = classify(name.to_s) - end - - # Emptiness begets emptiness. - if name.to_s == '' - return Mustache - end - - file_name = underscore(name) - - name = "#{view_namespace}::#{name}" - - if const = const_get!(name) - const - elsif File.exists?(file = "#{view_path}/#{file_name}.rb") - require "#{file}".chomp('.rb') - const_get!(name) || Mustache - else - Mustache - end - end - - # Supercharged version of Module#const_get. - # - # Always searches under Object and can find constants by their full name, - # e.g. Mustache::Views::Index - # - # name - The full constant name to find. - # - # Returns the constant if found - # Returns nil if nothing is found - def self.const_get!(name) - name.split('::').inject(Object) do |klass, name| - klass.const_get(name) - end - rescue NameError - nil - end - # Has this template already been compiled? Compilation is somewhat # expensive so it may be useful to check this before attempting it. def self.compiled? @template.is_a? Template end @@ -273,10 +223,10 @@ part[0] = part[0].chr.upcase; part end.join end.join('::') end - # TemplatePartial => template_partial + # TemplatePartial => template_partial # Template::Partial => template/partial # Takes a string but defaults to using the current class' name. def self.underscore(classified = name) classified = name if classified.to_s.empty? classified = superclass.name if classified.to_s.empty?