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?