Class: ActiveFacets::ResourceManager
- Inherits:
-
Object
- Object
- ActiveFacets::ResourceManager
- Defined in:
- lib/active_facets/resource_manager.rb
Class Method Summary collapse
-
.default_resource_mapper(resource_class) ⇒ Object
Default resource mapping scheme, can be overrided with config.
-
.default_serializer_mapper(resource_class, serializer, type, version, options) ⇒ Object
TODO –jdc implement recursive superclass/parentclass lookup Default serializer mapping scheme, can be overrided with config.
-
.instance ⇒ ResourceManager
Singleton.
Instance Method Summary collapse
-
#attribute_serializer_class_for(resource_class, attribute_name, options) ⇒ AttributeSerializer::Base
Fetches the attribute serializer registered for the given resource_class.
- #extract_version_from_opts(options) ⇒ Object
-
#register(resource_class, serializer, namespace = nil) ⇒ Array
(Memoized) Associate a serializer with a resource_class.
-
#resource_class_for(serializer) ⇒ Object
Fetches the resource class registered for the serializer.
-
#resource_map(resource_class) ⇒ Array
Fetches the set of filter and field override indexes for resource_class.
-
#serializer_for(resource_class, options) ⇒ Serializer::Base
Fetches the serializer registered for the resource_class.
Class Method Details
.default_resource_mapper(resource_class) ⇒ Object
Default resource mapping scheme, can be overrided with config
8 9 10 11 12 13 14 15 |
# File 'lib/active_facets/resource_manager.rb', line 8 def self.default_resource_mapper(resource_class) [].tap do |map| until(resource_class.superclass == BasicObject) do map << resource_class.name.tableize resource_class = resource_class.superclass end end end |
.default_serializer_mapper(resource_class, serializer, type, version, options) ⇒ Object
TODO –jdc implement recursive superclass/parentclass lookup Default serializer mapping scheme, can be overrided with config
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/active_facets/resource_manager.rb', line 20 def self.default_serializer_mapper(resource_class, serializer, type, version, ) case type when :serializer [ 'V' + version.to_i.to_s + '::' + resource_class.name.camelcase + '::' + resource_class.name.camelcase + type.to_s.camelcase, 'V' + version.to_i.to_s + '::' + resource_class.name.camelcase + type.to_s.camelcase, ].each { |name| klass = name.safe_constantize return klass.new if klass.present? } else [ 'V' + version.to_i.to_s + '::' + resource_class.name.camelcase + '::' + serializer + type.to_s.camelcase, 'V' + version.to_i.to_s + '::' + serializer + type.to_s.camelcase, ].find { |name| klass = name.safe_constantize return klass if klass.present? } end end |
.instance ⇒ ResourceManager
Singleton
44 45 46 |
# File 'lib/active_facets/resource_manager.rb', line 44 def self.instance @instance ||= new end |
Instance Method Details
#attribute_serializer_class_for(resource_class, attribute_name, options) ⇒ AttributeSerializer::Base
Fetches the attribute serializer registered for the given resource_class
70 71 72 |
# File 'lib/active_facets/resource_manager.rb', line 70 def attribute_serializer_class_for(resource_class, attribute_name, ) fetch_serializer(resource_class, attribute_name.to_s.camelcase, :attribute_serializer, ) end |
#extract_version_from_opts(options) ⇒ Object
93 94 95 |
# File 'lib/active_facets/resource_manager.rb', line 93 def extract_version_from_opts() ((.try(:[], ActiveFacets.opts_key) || {})[ActiveFacets.version_key] || ActiveFacets.default_version).to_f end |
#register(resource_class, serializer, namespace = nil) ⇒ Array
(Memoized) Associate a serializer with a resource_class
53 54 55 |
# File 'lib/active_facets/resource_manager.rb', line 53 def register(resource_class, serializer, namespace = nil) registry[resource_class] = [serializer, namespace] end |
#resource_class_for(serializer) ⇒ Object
Fetches the resource class registered for the serializer
77 78 79 80 81 82 |
# File 'lib/active_facets/resource_manager.rb', line 77 def resource_class_for(serializer) registry.each_pair do |resource_class, entry| return resource_class if serializer == entry[0] end nil end |
#resource_map(resource_class) ⇒ Array
Fetches the set of filter and field override indexes for resource_class
87 88 89 90 91 |
# File 'lib/active_facets/resource_manager.rb', line 87 def resource_map(resource_class) memoized_resource_map[resource_class] ||= begin self.class.resource_mapper.call(resource_class) end end |
#serializer_for(resource_class, options) ⇒ Serializer::Base
Fetches the serializer registered for the resource_class
61 62 63 |
# File 'lib/active_facets/resource_manager.rb', line 61 def serializer_for(resource_class, ) fetch_serializer(resource_class, resource_class.name.demodulize.to_s.camelcase, :serializer, ) end |