Class: ActiveFacets::Config
- Inherits:
-
Object
- Object
- ActiveFacets::Config
- Defined in:
- lib/active_facets/config.rb
Instance Attribute Summary collapse
-
#compiled ⇒ Object
readonly
Boolean: state.
-
#extensions ⇒ Object
readonly
Hash: keys are defined extension values.
-
#namespaces ⇒ Object
readonly
Hash: keys are resource attribute names storing nested JSON, values are nested attribute names.
-
#normalized_field_sets ⇒ Object
readonly
Hash: compiled field sets.
-
#resource_class ⇒ Object
Class: Resource Class to serialize.
-
#serializer ⇒ Object
readonly
Serializer::Base.
-
#serializers ⇒ Object
readonly
Hash: API attribute names requiring custom serialization.
-
#transforms_from ⇒ Object
readonly
Hash: keys are public API attribute names, values are resource attribute names.
-
#transforms_to ⇒ Object
readonly
Hash: keys are public API attribute names, values are resource attribute names.
Instance Method Summary collapse
- #alias_field_set(field_set_alias, field_set) ⇒ Object
-
#compile!(serializer) ⇒ Config
(Memoized) Normalizes all Field Set Aliases.
-
#field_set_itterator(field_set) ⇒ Hash
Invokes block on a Field Set with recursive, depth first traversal.
-
#merge!(config) ⇒ Config
Merges all ancestor accessors into self.
-
#transforms(direction = :from) ⇒ Hash
Returns Field to resource attribute map.
Instance Attribute Details
#compiled ⇒ Object
Boolean: state
16 17 18 |
# File 'lib/active_facets/config.rb', line 16 def compiled @compiled end |
#extensions ⇒ Object
Hash: keys are defined extension values
34 35 36 |
# File 'lib/active_facets/config.rb', line 34 def extensions @extensions end |
#namespaces ⇒ Object
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_sets ⇒ Object
Hash: compiled field sets
22 23 24 |
# File 'lib/active_facets/config.rb', line 22 def normalized_field_sets @normalized_field_sets end |
#resource_class ⇒ Object
Class: Resource Class to serialize
37 38 39 |
# File 'lib/active_facets/config.rb', line 37 def resource_class @resource_class end |
#serializer ⇒ Object
Serializer::Base
19 20 21 |
# File 'lib/active_facets/config.rb', line 19 def serializer @serializer end |
#serializers ⇒ Object
Hash: API attribute names requiring custom serialization
28 29 30 |
# File 'lib/active_facets/config.rb', line 28 def serializers @serializers end |
#transforms_from ⇒ Object
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_to ⇒ Object
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
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
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
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
47 48 49 |
# File 'lib/active_facets/config.rb', line 47 def transforms(direction = :from) direction == :from ? transforms_from : transforms_to end |