Class: ActiveFacets::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/active_facets/config.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#compiledObject

Boolean: state



16
17
18
# File 'lib/active_facets/config.rb', line 16

def compiled
  @compiled
end

#extensionsObject

Hash: keys are defined extension values



34
35
36
# File 'lib/active_facets/config.rb', line 34

def extensions
  @extensions
end

#namespacesObject

Hash: keys are resource attribute names storing nested JSON, values are nested attribute names



31
32
33
# File 'lib/active_facets/config.rb', line 31

def namespaces
  @namespaces
end

#normalized_field_setsObject

Hash: compiled field sets



22
23
24
# File 'lib/active_facets/config.rb', line 22

def normalized_field_sets
  @normalized_field_sets
end

#resource_classObject

Class: Resource Class to serialize



37
38
39
# File 'lib/active_facets/config.rb', line 37

def resource_class
  @resource_class
end

#serializerObject

Serializer::Base



19
20
21
# File 'lib/active_facets/config.rb', line 19

def serializer
  @serializer
end

#serializersObject

Hash: API attribute names requiring custom serialization



28
29
30
# File 'lib/active_facets/config.rb', line 28

def serializers
  @serializers
end

#transforms_fromObject

Hash: keys are public API attribute names, values are resource attribute names



25
26
27
# File 'lib/active_facets/config.rb', line 25

def transforms_from
  @transforms_from
end

#transforms_toObject

Hash: keys are public API attribute names, values are resource attribute names



25
26
27
# File 'lib/active_facets/config.rb', line 25

def transforms_to
  @transforms_to
end

Instance Method Details

#alias_field_set(field_set_alias, field_set) ⇒ Object



39
40
41
42
# File 'lib/active_facets/config.rb', line 39

def alias_field_set(field_set_alias, field_set)
  self.compiled = false
  field_sets[field_set_alias] = field_set
end

#compile!(serializer) ⇒ Config

(Memoized) Normalizes all Field Set Aliases

Parameters:

Returns:



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/active_facets/config.rb', line 54

def compile!(serializer)
  self.serializer = serializer
  self.normalized_field_sets = { all: {} }.with_indifferent_access

  #aggregate all compiled field_sets into the all collection
  normalized_field_sets[:all][:fields] = field_sets.inject({}) do |result, (field_set_alias, field_set)|
    result = merge_field_sets(result, dealias_field_set!(field_set, field_set_alias)[:fields])
  end

  #filter all compiled field_sets into a corresponding attributes collection
  normalized_field_sets.each do |field_set_alias, normalized_field_set|
    normalized_field_set[:attributes] = normalized_field_set[:fields].reject { |field_set, nested_field_sets|
      serializer.send :is_association?, field_set
    }
  end

  self.compiled = true
  self
end

#field_set_itterator(field_set) ⇒ Hash

Invokes block on a Field Set with recursive, depth first traversal

Parameters:

  • field_set (Field Set)

    to traverse

  • block (Block)

    to call for each field

Returns:

  • (Hash)

    injection of block results

Raises:



93
94
95
96
# File 'lib/active_facets/config.rb', line 93

def field_set_itterator(field_set)
  raise ActiveFacets::Errors::ConfigurationError.new(ActiveFacets::Errors::ConfigurationError::COMPILED_ERROR_MSG) unless compiled
  internal_field_set_itterator(dealias_field_set!(default_field_set(field_set))[:fields], Proc.new)
end

#merge!(config) ⇒ Config

Merges all ancestor accessors into self

Returns:



76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/active_facets/config.rb', line 76

def merge!(config)
  self.compiled = false
  self.resource_class ||= config.resource_class
  transforms_from.merge!  config.transforms_from
  transforms_to.merge!    config.transforms_to
  serializers.merge!      config.serializers
  namespaces.merge!       config.namespaces
  field_sets.merge!       config.field_sets
  extensions.merge!       config.extensions

  self
end

#transforms(direction = :from) ⇒ Hash

Returns Field to resource attribute map

Parameters:

  • direction (Symbol) (defaults to: :from)

Returns:

  • (Hash)


47
48
49
# File 'lib/active_facets/config.rb', line 47

def transforms(direction = :from)
  direction == :from ? transforms_from : transforms_to
end