class Rspec::Usecases::Options::DynamicOptions
Dynamic option will convert a value
Public Class Methods
new(option_key, value, api = {})
click to toggle source
rubocop:disable Metrics/CyclomaticComplexity
Calls superclass method
# File lib/rspec/usecases/options/dynamic_options.rb, line 10 def initialize(option_key, value, api = {}) super() # This will load app the default values parse(api) self.empty = value.nil? || (value.is_a?(Hash) && value.empty?) if !value.nil? && (value.is_a?(TrueClass) || value.is_a?(FalseClass)) self.empty = value.is_a?(FalseClass) return end return if empty? return if value == option_key parse(value) end
struct_to_hash(data)
click to toggle source
rubocop:disable Metrics/CyclomaticComplexity, Metrics/AbcSize
# File lib/rspec/usecases/options/dynamic_options.rb, line 43 def self.struct_to_hash(data) # No test yet if data.is_a?(Array) return data.map { |v| v.is_a?(OpenStruct) ? struct_to_hash(v) : v } end data.each_pair.with_object({}) do |(key, value), hash| case value when OpenStruct hash[key] = struct_to_hash(value) when Array # No test yet values = value.map { |v| v.is_a?(OpenStruct) ? struct_to_hash(v) : v } hash[key] = values else hash[key] = value end end end
Public Instance Methods
active?()
click to toggle source
rubocop:enable Metrics/CyclomaticComplexity
# File lib/rspec/usecases/options/dynamic_options.rb, line 30 def active? !empty? end
empty?()
click to toggle source
# File lib/rspec/usecases/options/dynamic_options.rb, line 34 def empty? empty end
to_h()
click to toggle source
# File lib/rspec/usecases/options/dynamic_options.rb, line 38 def to_h DynamicOptions.struct_to_hash(self) end
Private Instance Methods
parse(value)
click to toggle source
rubocop:enable Metrics/CyclomaticComplexity, Metrics/AbcSize
# File lib/rspec/usecases/options/dynamic_options.rb, line 66 def parse(value) case value when Array parse_array(value) when Hash parse_hash(value) else parse_value(value) end end
parse_array(values)
click to toggle source
# File lib/rspec/usecases/options/dynamic_options.rb, line 83 def parse_array(values) values.map do |value| case value when Symbol, String parse_symbol_or_string(value) when Hash parse_hash(value) else raise Rspec::Usecases::Error, 'Unknown option paramater' end end end
parse_hash(data)
click to toggle source
# File lib/rspec/usecases/options/dynamic_options.rb, line 77 def parse_hash(data) data.each do |k, v| send("#{k}=", v) end end
parse_symbol_or_string(value)
click to toggle source
# File lib/rspec/usecases/options/dynamic_options.rb, line 96 def parse_symbol_or_string(value) send("#{value}=", true) end