Actions
Feature #14405
closedAdd base option to Pathname.glob also
Description
Dir.glob
has base
option since Ruby 2.5.
https://bugs.ruby-lang.org/issues/13056
However Pathname.glob
does not have the option.
I would like to use base
option with Pathname
class.
But I feel Dir.glob('*.rb', base: 'dir').map{|path|Pathname(path)}
is lengthy, so I'd like to add the option to Pathname.glob
.
This patch adds the option to Pathname.glob
also.
For example:
require 'pathname'
p Pathname.glob('lib/i*.rb', 0) # => [#<Pathname:lib/irb.rb>, #<Pathname:lib/ipaddr.rb>]
p Dir.glob('i*.rb', 0, base: 'lib') # => ["irb.rb", "ipaddr.rb"]
p Dir.glob('i*.rb', base: 'lib') # => ["irb.rb", "ipaddr.rb"]
p Pathname.glob('i*.rb', 0, base: 'lib') # => [#<Pathname:irb.rb>, #<Pathname:ipaddr.rb>]
p Pathname.glob('i*.rb', base: 'lib') # => [#<Pathname:irb.rb>, #<Pathname:ipaddr.rb>]
p Pathname.glob('i*.rb', base: Pathname('lib')) # => [#<Pathname:irb.rb>, #<Pathname:ipaddr.rb>]
p Pathname.glob('i*.rb', base: Pathname(`pwd`.chomp) / 'lib') # => [#<Pathname:irb.rb>, #<Pathname:ipaddr.rb>]
p Pathname.glob('i*.rb', base: File.join(`pwd`.chomp, 'lib')) # => [#<Pathname:irb.rb>, #<Pathname:ipaddr.rb>]
Pathname.glob('i*.rb', foo: 'bar') rescue p $! # => #<ArgumentError: unknown keyword: foo>
Pathname.glob('i*.rb', foo: 'bar') rescue p $!.backtrace # => ["<...>/test.rb:13:in `glob'", "<...>/test.rb:13:in `glob'", "<...>/test.rb:13:in `<main>'"]
If the patch is OK, I'll do the follwoing TODOs.
- Add documentation
- Add tests to here. https://github.com/ruby/ruby/blob/d891056e3a6232163e99636cfcbb7bbfe1291404/test/pathname/test_pathname.rb#L1231-L1241
Files
Actions
Like0
Like0Like0Like0Like0Like0