Files
news.gitea.happylizard.me/bin/gems/facets-3.1.0/lib/standard/facets/pathname/glob.rb
T
pizza2d1 4cee170d66
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 9s
Add bin and edit workflow
2026-09-16 13:11:16 -06:00

58 lines
1.4 KiB
Ruby

class Pathname
# Glob pathnames.
def glob(match, *opts)
flags = glob_flags(opts)
Dir.glob(::File.join(self.to_s, match), flags).collect{ |m| self.class.new(m) }
end
# Return the first glob match.
#
# DEPRECATE: While slightly faster then glob().first, not really worth it
# unless this can be rewritten to shortcut on first match (using fnmatch?).
# In wich case, is there a better name for this method?
def glob_first(match, *opts)
flags = glob_flags(opts)
file = ::Dir.glob(::File.join(self.to_s, match), flags).first
file ? self.class.new(file) : nil
end
# Return globbed matches with pathnames relative to the current pathname.
def glob_relative(match, *opts)
flags = glob_flags(opts)
files = Dir.glob(::File.join(self.to_s, match), flags)
files = files.map{ |f| f.sub(self.to_s.chomp('/') + '/', '') }
files.collect{ |m| self.class.new(m) }
end
# Does a directory contain a matching entry?
# Or if the pathname is a file, same as #fnmatch.
#
# TODO: Move to own file? Better name?
#
# Returns [Pathname]
def include?(pattern,*opts)
if directory?
glob_first(pattern,*opts)
else
fnmatch(pattern,*opts)
end
end
private
def glob_flags(opts)
flags = 0
opts.each do |opt|
case opt when Symbol, String
flags += ::File.const_get("FNM_#{opt}".upcase)
else
flags += opt
end
end
flags
end
end