class Sanford::TemplateSource
Attributes
engines[R]
path[R]
Public Class Methods
new(path, logger = nil)
click to toggle source
# File lib/sanford/template_source.rb, line 10 def initialize(path, logger = nil) @path = path.to_s @default_opts = { 'source_path' => @path, 'logger' => logger || Sanford::NullLogger.new } @engines = Hash.new do |hash, ext| # cache null template exts so we don't repeatedly call this block for # known null template exts hash[ext.to_s] = Sanford::NullTemplateEngine.new(@default_opts) end @engine_exts = [] end
Public Instance Methods
==(other_template_source)
click to toggle source
Calls superclass method
# File lib/sanford/template_source.rb, line 49 def ==(other_template_source) if other_template_source.kind_of?(TemplateSource) self.path == other_template_source.path && self.engines == other_template_source.engines else super end end
engine(input_ext, engine_class, registered_opts = nil)
click to toggle source
# File lib/sanford/template_source.rb, line 24 def engine(input_ext, engine_class, registered_opts = nil) @engine_exts << input_ext.to_s engine_opts = @default_opts.merge(registered_opts || {}) engine_opts['ext'] = input_ext.to_s @engines[input_ext.to_s] = engine_class.new(engine_opts) end
engine_for?(ext)
click to toggle source
# File lib/sanford/template_source.rb, line 31 def engine_for?(ext) @engine_exts.include?(ext.to_s) end
engine_for_template?(template_name)
click to toggle source
# File lib/sanford/template_source.rb, line 35 def engine_for_template?(template_name) self.engine_for?(get_template_ext(template_name)) end
partial(template_name, locals)
click to toggle source
# File lib/sanford/template_source.rb, line 44 def partial(template_name, locals) engine = @engines[get_template_ext(template_name)] engine.partial(template_name, locals) end
render(template_name, service_handler, locals)
click to toggle source
# File lib/sanford/template_source.rb, line 39 def render(template_name, service_handler, locals) engine = @engines[get_template_ext(template_name)] engine.render(template_name, service_handler, locals) end
Private Instance Methods
get_template_ext(template_name)
click to toggle source
# File lib/sanford/template_source.rb, line 60 def get_template_ext(template_name) files = Dir.glob("#{File.join(@path, template_name.to_s)}*") if files.size > 1 raise ArgumentError, "#{template_name.inspect} matches more than one " \ "file, consider using a more specific template name" end parse_ext(files.first.to_s) end
parse_ext(template_name)
click to toggle source
# File lib/sanford/template_source.rb, line 69 def parse_ext(template_name) File.extname(template_name)[1..-1] end