@@ -1654,21 +1654,21 @@ def separator(string)
1654
1654
#
1655
1655
# Returns the rest of +argv+ left unparsed.
1656
1656
#
1657
- def order ( *argv , into : nil , &nonopt )
1657
+ def order ( *argv , ** keywords , &nonopt )
1658
1658
argv = argv [ 0 ] . dup if argv . size == 1 and Array === argv [ 0 ]
1659
- order! ( argv , into : into , &nonopt )
1659
+ order! ( argv , ** keywords , &nonopt )
1660
1660
end
1661
1661
1662
1662
#
1663
1663
# Same as #order, but removes switches destructively.
1664
1664
# Non-option arguments remain in +argv+.
1665
1665
#
1666
- def order! ( argv = default_argv , into : nil , &nonopt )
1666
+ def order! ( argv = default_argv , into : nil , ** keywords , &nonopt )
1667
1667
setter = -> ( name , val ) { into [ name . to_sym ] = val } if into
1668
- parse_in_order ( argv , setter , &nonopt )
1668
+ parse_in_order ( argv , setter , ** keywords , &nonopt )
1669
1669
end
1670
1670
1671
- def parse_in_order ( argv = default_argv , setter = nil , &nonopt ) # :nodoc:
1671
+ def parse_in_order ( argv = default_argv , setter = nil , exact : require_exact , ** , &nonopt ) # :nodoc:
1672
1672
opt , arg , val , rest = nil
1673
1673
nonopt ||= proc { |a | throw :terminate , a }
1674
1674
argv . unshift ( arg ) if arg = catch ( :terminate ) {
@@ -1679,7 +1679,7 @@ def parse_in_order(argv = default_argv, setter = nil, &nonopt) # :nodoc:
1679
1679
opt , rest = $1, $2
1680
1680
opt . tr! ( '_' , '-' )
1681
1681
begin
1682
- if require_exact
1682
+ if exact
1683
1683
sw , = search ( :long , opt )
1684
1684
else
1685
1685
sw , = complete ( :long , opt , true )
@@ -1714,7 +1714,7 @@ def parse_in_order(argv = default_argv, setter = nil, &nonopt) # :nodoc:
1714
1714
val = arg . delete_prefix ( '-' )
1715
1715
has_arg = true
1716
1716
rescue InvalidOption
1717
- raise if require_exact
1717
+ raise if exact
1718
1718
# if no short options match, try completion with long
1719
1719
# options.
1720
1720
sw , = complete ( :long , opt )
@@ -1779,18 +1779,18 @@ def callback!(cb, max_arity, *args) # :nodoc:
1779
1779
# <code>[]=</code> method (so it can be Hash, or OpenStruct, or other
1780
1780
# similar object).
1781
1781
#
1782
- def permute ( *argv , into : nil )
1782
+ def permute ( *argv , ** keywords )
1783
1783
argv = argv [ 0 ] . dup if argv . size == 1 and Array === argv [ 0 ]
1784
- permute! ( argv , into : into )
1784
+ permute! ( argv , ** keywords )
1785
1785
end
1786
1786
1787
1787
#
1788
1788
# Same as #permute, but removes switches destructively.
1789
1789
# Non-option arguments remain in +argv+.
1790
1790
#
1791
- def permute! ( argv = default_argv , into : nil )
1791
+ def permute! ( argv = default_argv , ** keywords )
1792
1792
nonopts = [ ]
1793
- order! ( argv , into : into , &nonopts . method ( :<< ) )
1793
+ order! ( argv , ** keywords , &nonopts . method ( :<< ) )
1794
1794
argv [ 0 , 0 ] = nonopts
1795
1795
argv
1796
1796
end
@@ -1802,20 +1802,20 @@ def permute!(argv = default_argv, into: nil)
1802
1802
# values are stored there via <code>[]=</code> method (so it can be Hash,
1803
1803
# or OpenStruct, or other similar object).
1804
1804
#
1805
- def parse ( *argv , into : nil )
1805
+ def parse ( *argv , ** keywords )
1806
1806
argv = argv [ 0 ] . dup if argv . size == 1 and Array === argv [ 0 ]
1807
- parse! ( argv , into : into )
1807
+ parse! ( argv , ** keywords )
1808
1808
end
1809
1809
1810
1810
#
1811
1811
# Same as #parse, but removes switches destructively.
1812
1812
# Non-option arguments remain in +argv+.
1813
1813
#
1814
- def parse! ( argv = default_argv , into : nil )
1814
+ def parse! ( argv = default_argv , ** keywords )
1815
1815
if ENV . include? ( 'POSIXLY_CORRECT' )
1816
- order! ( argv , into : into )
1816
+ order! ( argv , ** keywords )
1817
1817
else
1818
- permute! ( argv , into : into )
1818
+ permute! ( argv , ** keywords )
1819
1819
end
1820
1820
end
1821
1821
@@ -1838,7 +1838,7 @@ def parse!(argv = default_argv, into: nil)
1838
1838
# # params[:bar] = "x" # --bar x
1839
1839
# # params[:zot] = "z" # --zot Z
1840
1840
#
1841
- def getopts ( *args , symbolize_names : false )
1841
+ def getopts ( *args , symbolize_names : false , ** keywords )
1842
1842
argv = Array === args . first ? args . shift : default_argv
1843
1843
single_options , *long_options = *args
1844
1844
@@ -1866,7 +1866,7 @@ def getopts(*args, symbolize_names: false)
1866
1866
end
1867
1867
end
1868
1868
1869
- parse_in_order ( argv , result . method ( :[]= ) )
1869
+ parse_in_order ( argv , result . method ( :[]= ) , ** keywords )
1870
1870
symbolize_names ? result . transform_keys ( &:to_sym ) : result
1871
1871
end
1872
1872
@@ -1979,10 +1979,10 @@ def candidate(word)
1979
1979
# The optional +into+ keyword argument works exactly like that accepted in
1980
1980
# method #parse.
1981
1981
#
1982
- def load ( filename = nil , into : nil )
1982
+ def load ( filename = nil , ** keywords )
1983
1983
unless filename
1984
1984
basename = File . basename ( $0, '.*' )
1985
- return true if load ( File . expand_path ( basename , '~/.options' ) , into : into ) rescue nil
1985
+ return true if load ( File . expand_path ( basename , '~/.options' ) , ** keywords ) rescue nil
1986
1986
basename << ".options"
1987
1987
return [
1988
1988
# XDG
@@ -1994,11 +1994,11 @@ def load(filename = nil, into: nil)
1994
1994
'~/config/settings' ,
1995
1995
] . any? { |dir |
1996
1996
next if !dir or dir . empty?
1997
- load ( File . expand_path ( basename , dir ) , into : into ) rescue nil
1997
+ load ( File . expand_path ( basename , dir ) , ** keywords ) rescue nil
1998
1998
}
1999
1999
end
2000
2000
begin
2001
- parse ( *File . readlines ( filename , chomp : true ) , into : into )
2001
+ parse ( *File . readlines ( filename , chomp : true ) , ** keywords )
2002
2002
true
2003
2003
rescue Errno ::ENOENT , Errno ::ENOTDIR
2004
2004
false
@@ -2011,10 +2011,10 @@ def load(filename = nil, into: nil)
2011
2011
#
2012
2012
# +env+ defaults to the basename of the program.
2013
2013
#
2014
- def environment ( env = File . basename ( $0, '.*' ) )
2014
+ def environment ( env = File . basename ( $0, '.*' ) , ** keywords )
2015
2015
env = ENV [ env ] || ENV [ env . upcase ] or return
2016
2016
require 'shellwords'
2017
- parse ( *Shellwords . shellwords ( env ) )
2017
+ parse ( *Shellwords . shellwords ( env ) , ** keywords )
2018
2018
end
2019
2019
2020
2020
#
@@ -2331,19 +2331,19 @@ def options
2331
2331
# Parses +self+ destructively in order and returns +self+ containing the
2332
2332
# rest arguments left unparsed.
2333
2333
#
2334
- def order! ( &blk ) options . order! ( self , &blk ) end
2334
+ def order! ( ** keywords , &blk ) options . order! ( self , ** keywords , &blk ) end
2335
2335
2336
2336
#
2337
2337
# Parses +self+ destructively in permutation mode and returns +self+
2338
2338
# containing the rest arguments left unparsed.
2339
2339
#
2340
- def permute! ( ) options . permute! ( self ) end
2340
+ def permute! ( ** keywords ) options . permute! ( self , ** keywords ) end
2341
2341
2342
2342
#
2343
2343
# Parses +self+ destructively and returns +self+ containing the
2344
2344
# rest arguments left unparsed.
2345
2345
#
2346
- def parse! ( ) options . parse! ( self ) end
2346
+ def parse! ( ** keywords ) options . parse! ( self , ** keywords ) end
2347
2347
2348
2348
#
2349
2349
# Substitution of getopts is possible as follows. Also see
@@ -2356,8 +2356,8 @@ def parse!() options.parse!(self) end
2356
2356
# rescue OptionParser::ParseError
2357
2357
# end
2358
2358
#
2359
- def getopts ( *args , symbolize_names : false )
2360
- options . getopts ( self , *args , symbolize_names : symbolize_names )
2359
+ def getopts ( *args , symbolize_names : false , ** keywords )
2360
+ options . getopts ( self , *args , symbolize_names : symbolize_names , ** keywords )
2361
2361
end
2362
2362
2363
2363
#
0 commit comments