module Dieses::Support::ClassAttribute::Value

Constants

Append
Assign
Update

Public Class Methods

behave(behave, value = Undefined) click to toggle source
# File lib/dieses/support/class.rb, line 31
def behave(behave, value = Undefined)
  Undefined.equal?(behave) ? implicit(value) : explicit(behave)
end

Private Class Methods

explicit(behave) click to toggle source

Map given symbol to relevant module

# File lib/dieses/support/class.rb, line 38
def explicit(behave)
  const_get behave.to_s.capitalize
rescue NameError
  raise ArgumentError, "Unrecognized behave: #{behave}"
end
implicit(value) click to toggle source

Deduce semantics from a value

# File lib/dieses/support/class.rb, line 45
def implicit(value)
  require 'ostruct'
  require 'set'

  case value
  when ::Hash, ::Struct, ::OpenStruct then Update
  when ::Array, ::Set                 then Append
  else                                     Assign
  end
end