diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/.document | 1 | ||||
-rw-r--r-- | lib/cgi.rb | 2 | ||||
-rw-r--r-- | lib/forwardable.rb | 4 | ||||
-rw-r--r-- | lib/getoptlong.rb | 196 | ||||
-rw-r--r-- | lib/jcode.rb | 2 | ||||
-rw-r--r-- | lib/mathn.rb | 8 | ||||
-rw-r--r-- | lib/mkmf.rb | 25 | ||||
-rw-r--r-- | lib/optparse.rb | 12 | ||||
-rw-r--r-- | lib/rdoc/parsers/parse_rb.rb | 2 | ||||
-rw-r--r-- | lib/rdoc/ri/ri_paths.rb | 6 | ||||
-rw-r--r-- | lib/runit/assert.rb | 7 | ||||
-rw-r--r-- | lib/runit/testcase.rb | 2 | ||||
-rw-r--r-- | lib/tempfile.rb | 2 |
13 files changed, 209 insertions, 60 deletions
diff --git a/lib/.document b/lib/.document index 3978aa9347..9374ec7fd5 100644 --- a/lib/.document +++ b/lib/.document @@ -20,6 +20,7 @@ fileutils.rb find.rb forwardable.rb generator.rb +getoptlong.rb logger.rb matrix.rb net diff --git a/lib/cgi.rb b/lib/cgi.rb index c1627cb521..825be5a0a8 100644 --- a/lib/cgi.rb +++ b/lib/cgi.rb @@ -726,6 +726,8 @@ class CGI when /shift_jis/ni content = NKF::nkf('-s', content) options["language"] = "ja" unless options.has_key?("language") + when /utf-8/ni + content = NKF::nkf('-w', content) end end diff --git a/lib/forwardable.rb b/lib/forwardable.rb index 3e979a3155..1889f44109 100644 --- a/lib/forwardable.rb +++ b/lib/forwardable.rb @@ -93,7 +93,7 @@ # array, like this: # # class RecordCollection -# extends Forwardable +# extend Forwardable # def_delegator :@records, :[], :record_number # end # @@ -101,7 +101,7 @@ # all of which delegate to @records, this is how you can do it: # # class RecordCollection -# # extends Forwardable, but we did that above +# # extend Forwardable, but we did that above # def_delegators :@records, :size, :<<, :map # end # f = Foo.new diff --git a/lib/getoptlong.rb b/lib/getoptlong.rb index 8fb302d741..922d25371c 100644 --- a/lib/getoptlong.rb +++ b/lib/getoptlong.rb @@ -1,17 +1,94 @@ -# -*- Ruby -*- -# Copyright (C) 1998, 1999, 2000 Motoyuki Kasahara # -# You may redistribute it and/or modify it under the same license +# GetoptLong for Ruby +# +# Copyright (C) 1998, 1999, 2000 Motoyuki Kasahara. +# +# You may redistribute and/or modify this library under the same license # terms as Ruby. # +# See GetoptLong for documentation. +# +# Additional documents and the latest version of `getoptlong.rb' can be +# found at http://www.sra.co.jp/people/m-kasahr/ruby/getoptlong/ +# The GetoptLong class allows you to parse command line options similarly to +# the GNU getopt_long() C library call. Note, however, that GetoptLong is a +# pure Ruby implementation. # -# Documents and latest version of `getoptlong.rb' are found at: -# http://www.sra.co.jp/people/m-kasahr/ruby/getoptlong/ +# GetoptLong allows for POSIX-style options like <tt>--file</tt> as well +# as single letter options like <tt>-f</tt> # - +# The empty option <tt>--</tt> (two minus symbols) is used to end option +# processing. This can be particularly important if options have optional +# arguments. # -# Parse command line options just like GNU getopt_long(). +# Here is a simple example of usage: +# +# # == Synopsis +# # +# # hello: greets user, demonstrates command line parsing +# # +# # == Usage +# # +# # hello [OPTION] ... DIR +# # +# # -h, --help: +# # show help +# # +# # --repeat x, -n x: +# # repeat x times +# # +# # --name [name]: +# # greet user by name, if name not supplied default is John +# # +# # DIR: The directory in which to issue the greeting. +# +# require 'getoptlong' +# require 'rdoc/usage' +# +# opts = GetoptLong.new( +# [ '--help', '-h', GetoptLong::NO_ARGUMENT ], +# [ '--repeat', '-n', GetoptLong::REQUIRED_ARGUMENT ], +# [ '--name', GetoptLong::OPTIONAL_ARGUMENT ] +# ) +# +# dir = nil +# name = nil +# repetitions = 1 +# opts.each do |opt, arg| +# case opt +# when '--help' +# RDoc::usage +# when '--repeat' +# repetitions = arg.to_i +# when '--name' +# if arg == '' +# name = 'John' +# else +# name = arg +# end +# end +# end +# +# if ARGV.length != 1 +# puts "Missing dir argument (try --help)" +# exit 0 +# end +# +# dir = ARGV.shift +# +# Dir.chdir(dir) +# for i in (1..repetitions) +# print "Hello" +# if name +# print ", #{name}" +# end +# puts +# end +# +# Example command line: +# +# hello -n 6 --name -- /tmp # class GetoptLong # @@ -40,13 +117,20 @@ class GetoptLong class InvalidOption < Error; end # - # The arguments are passed to new() as an array of arrays. Each - # subarray has a number of option names which carry the same - # meaning, and a ARGUMENT_FLAG, being one of - # GetoptLong::NO_ARGUMENT, GetoptLong::REQUIRED_ARGUMENT or - # GetoptLong::OPTIONAL_ARGUMENT. These determine whether the - # option takes an argument or not, or whether it is optional The - # actual processing is done later with #each(). + # Set up option processing. + # + # The options to support are passed to new() as an array of arrays. + # Each sub-array contains any number of String option names which carry + # the same meaning, and one of the following flags: + # + # GetoptLong::NO_ARGUMENT :: Option does not take an argument. + # + # GetoptLong::REQUIRED_ARGUMENT :: Option always takes an argument. + # + # GetoptLong::OPTIONAL_ARGUMENT :: Option may or may not take an argument. + # + # The first option name is considered to be the preferred (canonical) name. + # Other than that, the elements of each sub-array can be in any order. # def initialize(*arguments) # @@ -109,11 +193,53 @@ class GetoptLong end # - # Set the handling of the ordering of options. The supplied - # argument ordering must be a member of ORDERINGS, i.e one of - # GetoptLong::REQUIRE_ORDER, GetoptLong::PERMUTE, - # GetoptLong::RETURN_IN_ORDER. A RuntimeError is raised if - # option processing has already started. + # Set the handling of the ordering of options and arguments. + # A RuntimeError is raised if option processing has already started. + # + # The supplied value must be a member of GetoptLong::ORDERINGS. It alters + # the processing of options as follows: + # + # <b>REQUIRE_ORDER</b> : + # + # Options are required to occur before non-options. + # + # Processing of options ends as soon as a word is encountered that has not + # been preceded by an appropriate option flag. + # + # For example, if -a and -b are options which do not take arguments, + # parsing command line arguments of '-a one -b two' would result in + # 'one', '-b', 'two' being left in ARGV, and only ('-a', '') being + # processed as an option/arg pair. + # + # This is the default ordering, if the environment variable + # POSIXLY_CORRECT is set. (This is for compatibility with GNU getopt_long.) + # + # <b>PERMUTE</b> : + # + # Options can occur anywhere in the command line parsed. This is the + # default behavior. + # + # Every sequence of words which can be interpreted as an option (with or + # without argument) is treated as an option; non-option words are skipped. + # + # For example, if -a does not require an argument and -b optionally takes + # an argument, parsing '-a one -b two three' would result in ('-a','') and + # ('-b', 'two') being processed as option/arg pairs, and 'one','three' + # being left in ARGV. + # + # If the ordering is set to PERMUTE but the environment variable + # POSIXLY_CORRECT is set, REQUIRE_ORDER is used instead. This is for + # compatibility with GNU getopt_long. + # + # <b>RETURN_IN_ORDER</b> : + # + # All words on the command line are processed as options. Words not + # preceded by a short or long option flag are passed as arguments + # with an option of '' (empty string). + # + # For example, if -a requires an argument but -b does not, a command line + # of '-a one -b two three' would result in option/arg pairs of ('-a', 'one') + # ('-b', ''), ('', 'two'), ('', 'three') being processed. # def ordering=(ordering) # @@ -144,7 +270,9 @@ class GetoptLong attr_reader :ordering # - # Set options + # Set options. Takes the same argument as GetoptLong.new. + # + # Raises a RuntimeError if option processing has already started. # def set_options(*arguments) # @@ -233,7 +361,7 @@ class GetoptLong alias quiet? quiet # - # Terminate option processing. + # Explicitly terminate option processing. # def terminate return nil if @status == STATUS_TERMINATED @@ -253,7 +381,7 @@ class GetoptLong end # - # Examine whether option processing is terminated or not. + # Returns true if option processing has terminated, false otherwise. # def terminated? return @status == STATUS_TERMINATED @@ -286,16 +414,22 @@ class GetoptLong # alias error? error - # - # Return an error message. + # Return the appropriate error message in POSIX-defined format. + # If no error has occurred, returns nil. # def error_message return @error_message end # - # Get next option name and its argument as an array. - # Return nil if the processing is complete (as determined by + # Get next option name and its argument, as an Array of two elements. + # + # The option name is always converted to the first (preferred) + # name given in the original options to GetoptLong.new. + # + # Example: ['--option', 'value'] + # + # Returns nil if the processing is complete (as determined by # STATUS_TERMINATED). # def get @@ -462,9 +596,15 @@ class GetoptLong # alias get_option get + # Iterator version of `get'. + # + # The block is called repeatedly with two arguments: + # The first is the option name. + # The second is the argument which followed it (if any). + # Example: ('--opt', 'value') # - # Iterator version of `get', passes the option and the - # corresponding argument to the supplied block for processing. + # The option name is always converted to the first (preferred) + # name given in the original options to GetoptLong.new. # def each loop do diff --git a/lib/jcode.rb b/lib/jcode.rb index ea90871572..fcf4f04730 100644 --- a/lib/jcode.rb +++ b/lib/jcode.rb @@ -174,7 +174,7 @@ class String def tr_s!(from, to) return self.delete!(from) if to.length == 0 - pattern = SqueezePatternCache[from] ||= /([#{_regex_quote(from)}])\1+/ + pattern = SqueezePatternCache[from] ||= /([#{_regex_quote(from)}])\1*/ if from[0] == ?^ last = /.$/.match(to)[0] self.gsub!(pattern, last) diff --git a/lib/mathn.rb b/lib/mathn.rb index 3108dd2eb7..3dea0afec1 100644 --- a/lib/mathn.rb +++ b/lib/mathn.rb @@ -16,14 +16,6 @@ require "matrix.rb" class Integer - remove_method(:gcd2) - def gcd2(other) - min = self.abs - max = other.abs - min, max = max % min, min while min > 0 - max - end - def Integer.from_prime_division(pd) value = 1 for prime, index in pd diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 421e6c9e71..1d495e8205 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -786,21 +786,26 @@ def find_executable(bin, path = nil) end end -def arg_config(config, *defaults, &block) - $arg_config << [config, *defaults] - defaults << nil if !block and defaults.empty? +def arg_config(config, default=nil, &block) + $arg_config << [config, default] + defaults = [] + if default + defaults << default + elsif !block + defaults << nil + end $configure_args.fetch(config.tr('_', '-'), *defaults, &block) end -def with_config(config, *defaults) +def with_config(config, default=nil) config = config.sub(/^--with[-_]/, '') val = arg_config("--with-"+config) do if arg_config("--without-"+config) false elsif block_given? - yield(config, *defaults) + yield(config, default) else - break *defaults + break default end end case val @@ -813,15 +818,15 @@ def with_config(config, *defaults) end end -def enable_config(config, *defaults) +def enable_config(config, default=nil) if arg_config("--enable-"+config) true elsif arg_config("--disable-"+config) false elsif block_given? - yield(config, *defaults) + yield(config, default) else - return *defaults + return default end end @@ -1105,7 +1110,7 @@ EXTSTATIC = #{$static || ""} STATIC_LIB = #{staticlib unless $static.nil?} } - install_dirs.each {|d| mfile.print("%-14s= %s\n" % d) if /^[[:upper:]]/ =~ d[0]} + install_dirs.each {|*d| mfile.print("%-14s= %s\n" % d) if /^[[:upper:]]/ =~ d[0]} n = ($extout ? '$(RUBYARCHDIR)/' : '') + '$(TARGET).' mfile.print %{ TARGET_SO = #{($extout ? '$(RUBYARCHDIR)/' : '')}$(DLLIB) diff --git a/lib/optparse.rb b/lib/optparse.rb index 6d1daeb6a0..9c7676f4be 100644 --- a/lib/optparse.rb +++ b/lib/optparse.rb @@ -357,7 +357,7 @@ class OptionParser if conv val = conv.call(*val) else - val = *val + val = val[0] end return arg, block, val else @@ -622,7 +622,7 @@ class OptionParser if list = __send__(id) val = list.fetch(key) {return nil} return val unless block_given? - yield(val) + yield(*val) end end @@ -848,7 +848,7 @@ class OptionParser # :nodoc: def add_officious list = base() - Officious.each_pair do |opt, block| + Officious.each do |opt, block| list.long[opt] ||= block.call(self) end end @@ -1319,7 +1319,7 @@ class OptionParser end begin opt, sw, val = sw.parse(rest, argv) {|*exc| raise(*exc)} - sw.call(val) if sw + sw.call(*val) if sw rescue ParseError raise $!.set_option(arg, rest) end @@ -1458,9 +1458,9 @@ class OptionParser yielded with the found value when succeeded. =end #'#"#`# def search(id, key) - visit(:search, id, key) do |k| + visit(:search, id, key) do |*k| return k unless block_given? - return yield(k) + return yield(*k) end end private :search diff --git a/lib/rdoc/parsers/parse_rb.rb b/lib/rdoc/parsers/parse_rb.rb index fedc67e51f..a297719b80 100644 --- a/lib/rdoc/parsers/parse_rb.rb +++ b/lib/rdoc/parsers/parse_rb.rb @@ -2555,7 +2555,7 @@ module RDoc break when TkCOMMA else - warn("unexpected token: '#{tk2.inspect}'") if $DEBBUG + warn("unexpected token: '#{tk2.inspect}'") if $DEBUG break end end diff --git a/lib/rdoc/ri/ri_paths.rb b/lib/rdoc/ri/ri_paths.rb index c610b6e551..c5526201ea 100644 --- a/lib/rdoc/ri/ri_paths.rb +++ b/lib/rdoc/ri/ri_paths.rb @@ -41,5 +41,11 @@ module RI # This is the search path for 'ri' PATH = [ SYSDIR, SITEDIR, HOMEDIR ].find_all {|p| p && File.directory?(p)} + + begin + require 'rubygems' + Dir["#{Gem.path}/doc/*/ri"].each { |path| RI::Paths::PATH << path } + rescue LoadError + end end end diff --git a/lib/runit/assert.rb b/lib/runit/assert.rb index c752b19a25..f18bb36127 100644 --- a/lib/runit/assert.rb +++ b/lib/runit/assert.rb @@ -6,8 +6,7 @@ require 'test/unit/assertions' require 'runit/error' module RUNIT - module Assert - include Test::Unit::Assertions + module AssertMixin def setup_assert end @@ -70,4 +69,8 @@ module RUNIT /assertions\.rb/.match(caller[1]) end end + module Assert + include Test::Unit::Assertions + include AssertMixin + end end diff --git a/lib/runit/testcase.rb b/lib/runit/testcase.rb index 4576cb8644..9e05a58abe 100644 --- a/lib/runit/testcase.rb +++ b/lib/runit/testcase.rb @@ -10,7 +10,7 @@ require 'test/unit/testcase' module RUNIT class TestCase < Test::Unit::TestCase - include RUNIT::Assert + include RUNIT::AssertMixin def self.suite method_names = instance_methods(true) diff --git a/lib/tempfile.rb b/lib/tempfile.rb index 1b2a889b4a..a033a5b29e 100644 --- a/lib/tempfile.rb +++ b/lib/tempfile.rb @@ -67,7 +67,7 @@ class Tempfile < DelegateClass(File) end def make_tmpname(basename, n) - sprintf('%s%d.%d', basename, $$, n) + sprintf('%s.%d.%d', basename, $$, n) end private :make_tmpname |