Sha256: ef6e376a9bd50ce2876c7059ac329bc4a2dadd309757210ff0e1636081b522df

Contents?: true

Size: 1.63 KB

Versions: 4

Compression:

Stored size: 1.63 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
        else
          return nil
        end
      end
    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

      templates.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

4 entries across 4 versions & 1 rubygems

Version Path
veewee-0.3.0.alpha8 lib/veewee/templates.rb
veewee-0.3.0.alpha7 lib/veewee/templates.rb
veewee-0.3.0.alpha6 lib/veewee/templates.rb
veewee-0.3.0.alpha5 lib/veewee/templates.rb