class IDL::OptionList::Option::Group::ParamSet
Attributes
params[R]
Public Class Methods
new(options)
click to toggle source
# File lib/ridl/optparse_ext.rb, line 75 def initialize(options) @description = Array === options[:description] ? options[:description] : (options[:description] || '').split('\n') @all_params = options[:all_params] == true @params = {} parms = options[:params] || options[:param] define_params(parms) if parms end
Public Instance Methods
define_params(spec = {})
click to toggle source
# File lib/ridl/optparse_ext.rb, line 111 def define_params(spec = {}) case spec when String, Hash define_param(spec) when Array spec.each { |p| define_param(p) } end end
description()
click to toggle source
# File lib/ridl/optparse_ext.rb, line 107 def description @params.values.inject(@description) { |list, vopt| list.concat(vopt[:description] || []) } end
run(param, options, *handler_args)
click to toggle source
# File lib/ridl/optparse_ext.rb, line 83 def run(param, options, *handler_args) key = to_key(param) if @all_params || @params.has_key?(key) param = key if String === param && @params.has_key?(key) param_arg = @params.has_key?(param) ? @params[param][:option_name] : param if self.respond_to?(:_exec, true) _exec(param_arg, options, *handler_args) elsif @params.has_key?(param) if @params[param][:option_type] == :list options[@params[param][:option_name]] ||= [] options[@params[param][:option_name]] << (handler_args.size == 1 ? handler_args.shift : handler_args) elsif @params[param][:option_type] == :noop # do nothing else options[@params[param][:option_name]] = handler_args.empty? ? (@params[param].has_key?(:option_value) ? @params[param][:option_value] : true) : (handler_args.size == 1 ? handler_args.shift : handler_args) end end return true end return false end
Private Instance Methods
define_param(spec)
click to toggle source
# File lib/ridl/optparse_ext.rb, line 129 def define_param(spec) case spec when String key = to_key(spec) @params[key] = { option_name: key } when Hash spec.each do |k, v| @params[to_key(k)] = (if Hash === v { option_name: to_key(v[:option_name] || k), option_type: v[:type], option_value: v.has_key?(:value) ? v[:value] : true, description: Array === v[:description] ? v[:description] : (v[:description] || '').split('\n') } else { option_name: to_key(v) } end) end end end
to_key(param)
click to toggle source
# File lib/ridl/optparse_ext.rb, line 122 def to_key(param) return param if Symbol === param # convert empty strings to single space strings before symbolizing String === param ? (param.empty? ? ' ' : param).to_sym : nil end