Sha256: 6fffec194c3229ea85707faebd3ff15bb976fdeda43781f8cd300dab12730039

Contents?: true

Size: 980 Bytes

Versions: 12

Compression:

Stored size: 980 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.template_path('slides')
        [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

12 entries across 12 versions & 1 rubygems

Version Path
reveal-ck-4.0.0 lib/reveal-ck/templates/finder.rb
reveal-ck-3.9.2 lib/reveal-ck/templates/finder.rb
reveal-ck-3.9.1 lib/reveal-ck/templates/finder.rb
reveal-ck-3.9.0 lib/reveal-ck/templates/finder.rb
reveal-ck-3.8.1 lib/reveal-ck/templates/finder.rb
reveal-ck-3.8.0 lib/reveal-ck/templates/finder.rb
reveal-ck-3.7.0 lib/reveal-ck/templates/finder.rb
reveal-ck-3.6.0 lib/reveal-ck/templates/finder.rb
reveal-ck-3.5.1 lib/reveal-ck/templates/finder.rb
reveal-ck-3.5.0 lib/reveal-ck/templates/finder.rb
reveal-ck-3.4.0 lib/reveal-ck/templates/finder.rb
reveal-ck-3.3.1 lib/reveal-ck/templates/finder.rb