Module: Schemad::Normalizer::ClassMethods

Defined in:
lib/schemad/normalizer.rb

Instance Method Summary collapse

Instance Method Details

#include_fields(*fields) ⇒ Object



26
27
28
# File 'lib/schemad/normalizer.rb', line 26

def include_fields(*fields)
  @allowed_attributes.concat fields
end

#inherited(subclass) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/schemad/normalizer.rb', line 18

def inherited(subclass)
  default_normalizers = inherited_var(:@normalizers, {})
  subclass.instance_variable_set(:@normalizers, default_normalizers)

  default_allowed = inherited_var(:@allowed_attributes, [])
  subclass.instance_variable_set(:@allowed_attributes, default_allowed)
end

#normalize(name, args = {}, &block) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/schemad/normalizer.rb', line 30

def normalize(name, args={}, &block)
  lookup = args[:key] || name
  method_name = normalizer_method_name(name)

  @normalizers[lookup] = name
  @allowed_attributes << lookup

  define_method method_name do |data|
    value = find_value lookup, data
    return value unless block_given?

    yield value
  end
end

#normalizer_method_name(field) ⇒ Object



45
46
47
# File 'lib/schemad/normalizer.rb', line 45

def normalizer_method_name(field)
  "normalize_#{field}".to_sym
end