APIdock / Ruby
/
method

get

ruby latest stable - Class: GetoptLong
get()
public

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).

# File lib/getoptlong.rb, line 427
 def get
 option_name, option_argument = nil, ''
 #
 # Check status.
 #
 return nil if @error != nil
 case @status
 when STATUS_YET
 @status = STATUS_STARTED
 when STATUS_TERMINATED
 return nil
 end
 #
 # Get next option argument.
 #
 if 0 < @rest_singles.length
 argument = '-' + @rest_singles
 elsif (ARGV.length == 0)
 terminate
 return nil
 elsif @ordering == PERMUTE
 while 0 < ARGV.length && ARGV[0] !~ /\A-./
 @non_option_arguments.push(ARGV.shift)
 end
 if ARGV.length == 0
 terminate
 return nil
 end
 argument = ARGV.shift
 elsif @ordering == REQUIRE_ORDER
 if (ARGV[0] !~ /\A-./)
 terminate
 return nil
 end
 argument = ARGV.shift
 else
 argument = ARGV.shift
 end
 #
 # Check the special argument `--'.
 # `--' indicates the end of the option list.
 #
 if argument == '--' && @rest_singles.length == 0
 terminate
 return nil
 end
 #
 # Check for long and short options.
 #
 if argument =~ /\A(--[^=]+)/ && @rest_singles.length == 0
 #
 # This is a long style option, which start with `--'.
 #
 pattern = 1ドル
 if @canonical_names.include?(pattern)
 option_name = pattern
 else
 #
 # The option `option_name' is not registered in `@canonical_names'.
 # It may be an abbreviated.
 #
 matches = []
 @canonical_names.each_key do |key|
 if key.index(pattern) == 0
 option_name = key
 matches << key
 end
 end
 if 2 <= matches.length
 set_error(AmbiguousOption, "option `#{argument}' is ambiguous between #{matches.join(', ')}")
 elsif matches.length == 0
 set_error(InvalidOption, "unrecognized option `#{argument}'")
 end
 end
 #
 # Check an argument to the option.
 #
 if @argument_flags[option_name] == REQUIRED_ARGUMENT
 if argument =~ /=(.*)/
 option_argument = 1ドル
 elsif 0 < ARGV.length
 option_argument = ARGV.shift
 else
 set_error(MissingArgument,
 "option `#{argument}' requires an argument")
 end
 elsif @argument_flags[option_name] == OPTIONAL_ARGUMENT
 if argument =~ /=(.*)/
 option_argument = 1ドル
 elsif 0 < ARGV.length && ARGV[0] !~ /\A-./
 option_argument = ARGV.shift
 else
 option_argument = ''
 end
 elsif argument =~ /=(.*)/
 set_error(NeedlessArgument,
 "option `#{option_name}' doesn't allow an argument")
 end
 elsif argument =~ /\A(-(.))(.*)/
 #
 # This is a short style option, which start with `-' (not `--').
 # Short options may be catenated (e.g. `-l -g' is equivalent to
 # `-lg').
 #
 option_name, ch, @rest_singles = 1,ドル 2,ドル 3ドル
 if @canonical_names.include?(option_name)
 #
 # The option `option_name' is found in `@canonical_names'.
 # Check its argument.
 #
 if @argument_flags[option_name] == REQUIRED_ARGUMENT
 if 0 < @rest_singles.length
 option_argument = @rest_singles
 @rest_singles = ''
 elsif 0 < ARGV.length
 option_argument = ARGV.shift
 else
 # 1003.2 specifies the format of this message.
 set_error(MissingArgument, "option requires an argument -- #{ch}")
 end
 elsif @argument_flags[option_name] == OPTIONAL_ARGUMENT
 if 0 < @rest_singles.length
 option_argument = @rest_singles
 @rest_singles = ''
 elsif 0 < ARGV.length && ARGV[0] !~ /\A-./
 option_argument = ARGV.shift
 else
 option_argument = ''
 end
 end
 else
 #
 # This is an invalid option.
 # 1003.2 specifies the format of this message.
 #
 if ENV.include?('POSIXLY_CORRECT')
 set_error(InvalidOption, "invalid option -- #{ch}")
 else
 set_error(InvalidOption, "invalid option -- #{ch}")
 end
 end
 else
 #
 # This is a non-option argument.
 # Only RETURN_IN_ORDER fell into here.
 #
 return '', argument
 end
 return @canonical_names[option_name], option_argument
 end

AltStyle によって変換されたページ (->オリジナル) /