Sha256: 9f324ba612d36f2b4d8b2246c374c99a3d0c45fbb27f10cde9b486eb5d145e07

Contents?: true

Size: 965 Bytes

Versions: 1

Compression:

Stored size: 965 Bytes

Contents

module RevealCK
  module Templates
    #
    # Public: This class is home to a simple algorithm for looking up
    # files in a series of directories. Directory order matters, and the
    # first match for the file will be returned. It'll raise if it can't
    # find the file you've asked for.
    #
    class Finder
      attr_reader :paths

      def initialize(args = {})
        @paths = args[:paths] || default_paths
      end

      def default_paths
        pwd_templates = File.join Dir.pwd, 'templates'
        reveal_ck_templates = RevealCK.path_to 'templates'
        [pwd_templates, reveal_ck_templates]
      end

      def find(template_name)
        paths.each do |path|
          glob_pattern = "#{File.join(path, template_name)}*"
          Dir.glob(glob_pattern).each do |match|
            return match unless File.directory? match
          end
        end
        fail "Unable to find #{template_name} in #{paths}"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
reveal-ck-0.3.0 lib/reveal-ck/templates/finder.rb