class Slop::Result
This class encapsulates a Parser and Options pair. The idea is that the Options class shouldn't have to deal with what happens when options are parsed, and the Parser shouldn't have to deal with the state of options once parsing is complete. This keeps the API really simple; A Parser parses, Options handles options, and this class handles the result of those actions. This class contains the important most used methods.
Attributes
Public Class Methods
# File lib/slop/result.rb, line 12 def initialize(parser) @parser = parser @options = parser.options end
Public Instance Methods
Returns an options value, nil if the option does not exist.
# File lib/slop/result.rb, line 18 def [](flag) (o = option(flag)) && o.value end
Set the value for an option. Raises an ArgumentError if the option does not exist.
# File lib/slop/result.rb, line 25 def []=(flag, value) if o = option(flag) o.value = value else raise ArgumentError, "no option with flag `#{flag}'" end end
Example:
opts = Slop.parse do |o| o.string '--host' o.int '-p' end # ruby run.rb connect --host 123 helo opts.arguments #=> ["connect", "helo"]
Returns an Array of String arguments that were not parsed.
# File lib/slop/result.rb, line 79 def arguments parser.arguments end
# File lib/slop/result.rb, line 46 def method_missing(name, *args, &block) if respond_to_missing?(name) (o = option(name.to_s.chomp("?"))) && used_options.include?(o) else super end end
Returns an Option if it exists. Ignores any prefixed hyphens.
# File lib/slop/result.rb, line 35 def option(flag) cleaned = -> (f) do key = f.to_s.sub(/\A--?/, '') key = key.tr '-', '_' if parser.config[:underscore_flags] key.to_sym end options.find do |o| o.flags.any? { |f| cleaned.(f) == cleaned.(flag) } end end
# File lib/slop/result.rb, line 54 def respond_to_missing?(name, include_private = false) name.to_s.end_with?("?") || super end
Returns a hash with option key => value.
# File lib/slop/result.rb, line 85 def to_hash Hash[options.reject(&:null?).map { |o| [o.key, o.value] }] end
# File lib/slop/result.rb, line 90 def to_s(**opts) options.to_s(**opts) end
Returns an Array of Option instances that were not used.
# File lib/slop/result.rb, line 64 def unused_options parser.unused_options end
Returns an Array of Option instances that were used.
# File lib/slop/result.rb, line 59 def used_options parser.used_options end