Sha256: 82c8dd0a1e7aa99158babc2dfddf9d02f60ef101bfe6b15fb623b4b4fa5c9c19

Contents?: true

Size: 1.62 KB

Versions: 8

Compression:

Stored size: 1.62 KB

Contents

module Veewee
  class Templates

    attr_accessor :env

    def initialize(env)
      @env=env
      return self
    end

    def [](name)
      result=nil
      valid_paths(env.template_path).each do |template_dir|
        template=Veewee::Template.new(name,File.join(template_dir,name),@env)
        if template.exists?
          result=template
          return result
        end
      end
      return nil
    end

    # Fetch all Templates
    def each(&block)
      templates=Hash.new

      valid_paths(env.template_path).each do |template_dir|

        env.logger.debug("[Template] Searching #{template_dir} for templates")

        subdirs=Dir.glob("#{template_dir}/*")
        subdirs.each do |sub|
          if File.directory?("#{sub}")
            name=sub.sub(/#{template_dir}\//,'')
            template=Veewee::Template.new(name,sub,@env)
            if template.exists?
                env.logger.debug("[Template] template '#{name}' found")
              templates[name]=template
            end
          end
        end
      end

      if templates.length==0
        env.logger.debug("[Template] no templates found") 
      end

      Hash[templates.sort].each(&block)
    end

    private
    # Traverses path to see which exist or not
    # and checks if available
    def valid_paths(paths)
      valid_paths=paths.collect { |path|
        if File.exists?(path) && File.directory?(path)
          env.logger.info "Path #{path} exists"
          File.expand_path(path)
        else
          env.logger.info "Path #{path} does not exist, skipping"
          nil
        end
      }
      return valid_paths.compact
    end



  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
veewee-0.3.6 lib/veewee/templates.rb
veewee-0.3.5 lib/veewee/templates.rb
veewee-0.3.4 lib/veewee/templates.rb
veewee-0.3.3 lib/veewee/templates.rb
veewee-0.3.2 lib/veewee/templates.rb
veewee-0.3.1 lib/veewee/templates.rb
veewee-0.3.0.beta2 lib/veewee/templates.rb
veewee-0.3.0.beta1 lib/veewee/templates.rb