aboutsummaryrefslogtreecommitdiffstats
path: root/lib/optparse
diff options
context:
space:
mode:
Diffstat (limited to 'lib/optparse')
-rw-r--r--lib/optparse/date.rb2
-rw-r--r--lib/optparse/version.rb14
2 files changed, 14 insertions, 2 deletions
diff --git a/lib/optparse/date.rb b/lib/optparse/date.rb
index c9f072f290..d680559f37 100644
--- a/lib/optparse/date.rb
+++ b/lib/optparse/date.rb
@@ -10,7 +10,7 @@ OptionParser.accept(DateTime) do |s,|
end
OptionParser.accept(Date) do |s,|
begin
- DateTime.parse(s) if s
+ Date.parse(s) if s
rescue ArgumentError
raise OptionParser::InvalidArgument, s
end
diff --git a/lib/optparse/version.rb b/lib/optparse/version.rb
index 35152181b0..8a1efcdf8c 100644
--- a/lib/optparse/version.rb
+++ b/lib/optparse/version.rb
@@ -5,7 +5,9 @@ class << OptionParser
progname = ARGV.options.program_name
show = proc do |klass, version|
version = version.join(".") if Array === version
- str = "#{progname}: #{klass} version #{version}"
+ str = "#{progname}"
+ str << ": #{klass}" unless klass == Object
+ str << " version #{version}"
if klass.const_defined?(:Release)
str << " (#{klass.const_get(:Release)})"
end
@@ -27,6 +29,16 @@ class << OptionParser
exit
end
+ def each_const(path, klass = ::Object)
+ path.split(/::|\//).inject(klass) do |klass, name|
+ raise NameError, path unless Module === klass
+ klass.constants.grep(/#{name}/i) do |c|
+ klass.const_defined?(c) or next
+ c = klass.const_get(c)
+ end
+ end
+ end
+
def search_const(klass, name)
klasses = [klass]
while klass = klasses.shift