Sha256: 782128e7c7be95d6e260c33b166c33649acf856b224b8ccd4e65797f0f6d3103
Contents?: true
Size: 1.71 KB
Versions: 2
Compression:
Stored size: 1.71 KB
Contents
module Slippers class TemplateGroupDirectory < TemplateGroup def initialize(directory_path, params={}) @directory_path = directory_path @super_group = params[:super_group] end attr_reader :directory_path def find(subtemplate) file_name = @directory_path + '/' + subtemplate + '.st' return find_renderer(subtemplate) unless File.exist?(file_name) Engine.new(FileTemplate.new(file_name).template, :template_group => self) end def has_registered?(class_name) return false unless @super_group @super_group.has_registered?(class_name) end def render(item) return '' unless @super_group @super_group.render(item) end def eql?(other) return false unless other directory_path.eql?(other.directory_path) end def hash @directory_path.hash end private def find_renderer(subtemplate) file_name = @directory_path + '/' + subtemplate + '.rb' return find_in_super_group(subtemplate) unless File.exist?(file_name) renderer_name = subtemplate.split('/')[-1] load File.expand_path(file_name) create_renderer renderer_name end def find_in_super_group(subtemplate) return nil unless @super_group @super_group.find(subtemplate) end def create_renderer(renderer_name) camelCase = renderer_name.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase } classes = camelCase.split('::') classes.shift if classes.empty? or classes.first.empty? const = classes.inject(Object){ |constant, class_name| constant.const_get(class_name) } const.new end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
starapor-slippers-0.0.6 | lib/engine/template_group_directory.rb |
starapor-slippers-0.0.8 | lib/engine/template_group_directory.rb |