From: shevegen@...
Date: 2018-01-26T19:07:25+00:00
Subject: [ruby-core:85135] [Ruby trunk Feature#14405] Add base option to	Pathname.glob also

Issue #14405 has been updated by shevegen (Robert A. Heiler).


Probably makes sense so people can use either variant by default
depending on their personal preferences. 

I personally love "Dir"-related methods; I think Dir[] is probably
the method I use the most in general when I need to find/obtain 
files and directory. For me, Pathname was too lengthy. :)

----------------------------------------
Feature #14405: Add base option to Pathname.glob also
https://bugs.ruby-lang.org/issues/14405#change-69860

* Author: pocke (Masataka Kuwabara)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------

`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--------------------------------
pathname-glob-base.patch (597 Bytes)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>