class SoapyCake::ModificationType

Constants

CHANGE
DO_NOT_CHANGE
InvalidInput
REMOVE

Attributes

default[R]
key[R]
modification_type_key[R]

Public Class Methods

new(key, modification_type_key, default) click to toggle source
# File lib/soapy_cake/modification_type.rb, line 9
def initialize(key, modification_type_key, default)
  @key = key
  @modification_type_key = modification_type_key
  @default = default
end

Public Instance Methods

options(input_opts) click to toggle source
# File lib/soapy_cake/modification_type.rb, line 15
def options(input_opts)
  validate_input(input_opts)

  input_opts.merge(
    key => value(input_opts),
    modification_type_key => modification_type(input_opts)
  )
end

Private Instance Methods

modification_type(input_opts) click to toggle source
# File lib/soapy_cake/modification_type.rb, line 32
def modification_type(input_opts)
  input_opts.fetch(modification_type_key) do
    input_opts[key] ? CHANGE : REMOVE
  end
end
validate_input(input_opts) click to toggle source
# File lib/soapy_cake/modification_type.rb, line 38
def validate_input(input_opts)
  return unless input_opts[key].nil? && input_opts[modification_type_key] == CHANGE

  raise(
    InvalidInput,
    "`#{modification_type_key}` was '#{CHANGE}', but no `#{key}` was provided to change it to"
  )
end
value(input_opts) click to toggle source
# File lib/soapy_cake/modification_type.rb, line 28
def value(input_opts)
  input_opts.fetch(key, default)
end