Sha256: 0803eddae99b84b4ba399e30e5c58a71e64e8e8ba15706aafa83917aeacfde02
Contents?: true
Size: 1.13 KB
Versions: 1
Compression:
Stored size: 1.13 KB
Contents
# frozen_string_literal: true # Released under the MIT License. # Copyright, 2014-2023, by Samuel Williams. require_relative 'list' module Build module Files class Path def glob(pattern) Glob.new(self, pattern) end end class Glob < List def initialize(root, pattern) @root = root @pattern = pattern end attr :root attr :pattern def roots [@root] end def full_pattern Path.join(@root, @pattern) end # Enumerate all paths matching the pattern. def each(&block) return to_enum unless block_given? ::Dir.glob(full_pattern, ::File::FNM_DOTMATCH) do |path| # Ignore `.` and `..` entries. next if path =~ /\/..?$/ yield Path.new(path, @root) end end def eql?(other) self.class.eql?(other.class) and @root.eql?(other.root) and @pattern.eql?(other.pattern) end def hash [@root, @pattern].hash end def include?(path) File.fnmatch(full_pattern, path) end def rebase(root) self.class.new(root, @pattern) end def inspect "<Glob #{full_pattern.inspect}>" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
build-files-1.9.0 | lib/build/files/glob.rb |