Module: HCast::Caster::ClassMethods

Defined in:
lib/hcast/caster.rb

Instance Method Summary collapse

Instance Method Details

#attributes(&block) ⇒ Object

Defines casting rules

Examples:

attributes do
  string   :first_name
  string   :last_name
  integer  :age, optional: true
end

Raises:

  • (ArgumentError)


91
92
93
94
95
96
# File 'lib/hcast/caster.rb', line 91

def attributes(&block)
  raise ArgumentError, "You should provide block" unless block_given?

  attributes = HCast::AttributesParser.parse(&block)
  self.class_variable_set(:@@attributes, attributes)
end

#cast(hash, options = {}) ⇒ Object

Performs casting

Parameters:

  • hash (Hash)

    hash for casting

  • options (Hash) (defaults to: {})

    options, input_keys: :string, output_key: :symbol



101
102
103
104
105
106
107
108
109
# File 'lib/hcast/caster.rb', line 101

def cast(hash, options = {})
  check_attributes_defined!
  check_hash_given!(hash)
  check_options!(options)
  set_default_options(options)

  attributes_caster = HCast::AttributesCaster.new(class_variable_get(:@@attributes), options)
  attributes_caster.cast(hash)
end