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>