Sha256: d3b0319a23031d3a366457b94dd854ea54054179edf1d7615056daa9b050e0fc

Contents?: true

Size: 981 Bytes

Versions: 3

Compression:

Stored size: 981 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 = File.join RevealCK::LOCATION, '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
        raise "Unable to find #{template_name} in #{paths}"
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
reveal-ck-0.2.0 lib/reveal-ck/templates/finder.rb
reveal-ck-0.1.8 lib/reveal-ck/templates/finder.rb
reveal-ck-0.1.7 lib/reveal-ck/templates/finder.rb