Sha256: a5e36d9f82ad77500b61e1293f20ef5614fd1d5605b4dd266429a10a6ef87407

Contents?: true

Size: 1.36 KB

Versions: 4

Compression:

Stored size: 1.36 KB

Contents

module Slippers
  class TemplateGroup
    def initialize(params={})
      @templates = params[:templates]
      @super_group = params[:super_group]
      @missing_handler = params[:missing_template_handler] || Slippers::Engine::MISSING_HANDLER
      @default_string = params[:default_string] || Slippers::Engine::DEFAULT_STRING
    end
    
    attr_reader :missing_handler, :default_string
    
    def find(subtemplate)
      return nil unless @templates
      return create_template(subtemplate.to_sym) if @templates.include?(subtemplate.to_sym)
      find_in_super_group(subtemplate)
    end
    
    def has_registered?(class_name)
       return false unless @templates
       return true if @templates.include?(class_name) 
       return false unless @super_group
       @super_group.has_registered?(class_name)  
    end
    
    def render(item)
      return '' unless @templates
      return @templates[item.class].render(item) if has_registered?(item.class)
      return '' unless @super_group
      @super_group.render(item)
    end
    
    private
      def find_in_super_group(subtemplate)
        return nil unless @super_group 
        @super_group.find(subtemplate)
      end
      
      def create_template(subtemplate)
        template = @templates[subtemplate]
        return template unless template.is_a?(String)
        Slippers::Engine.new(template)
      end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
slippers-0.0.14 lib/engine/template_group.rb
slippers-0.0.13 lib/engine/template_group.rb
slippers-0.0.12 lib/engine/template_group.rb
slippers-0.0.11 lib/engine/template_group.rb