Project

General

Profile

Actions

Feature #14405

closed

Add base option to Pathname.glob also

Added by pocke (Masataka Kuwabara) about 6 years ago. Updated almost 5 years ago.

Status:
Closed
Target version:
-
[ruby-core:85131]

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.


Files

pathname-glob-base.patch (597 Bytes) pathname-glob-base.patch pocke (Masataka Kuwabara), 01/26/2018 01:56 PM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0