Module: Datamappify::Data::Provider::CommonProvider::ModuleMethods
- Defined in:
- lib/datamappify/data/provider/common_provider.rb
Instance Method Summary collapse
-
#build_or_return_namespace(source_class_name) ⇒ Module
private
Builds or returns the namespace for the source class.
-
#class_name ⇒ String
Non-namespaced class name.
- #entity_class?(source_class_name) ⇒ Boolean private
-
#find_or_build_record_class(source_class_name) ⇒ Class
Finds or builds a data record class from the data provider.
-
#load_criterias ⇒ void
Loads all the criteria files from the data provider.
- #path_name ⇒ String
-
#records_namespace ⇒ Module
private
The namespace for the data records, e.g.
Instance Method Details
#build_or_return_namespace(source_class_name) ⇒ Module (private)
Builds or returns the namespace for the source class
67 68 69 70 71 72 73 74 75 |
# File 'lib/datamappify/data/provider/common_provider.rb', line 67 def build_or_return_namespace(source_class_name) source_class_name.deconstantize.split('::').inject(records_namespace) do |namespaces, namespace| if namespaces.const_defined?(namespace, false) namespaces.const_get(namespace) else namespaces.const_set(namespace, Module.new) end end end |
#class_name ⇒ String
Non-namespaced class name
22 23 24 |
# File 'lib/datamappify/data/provider/common_provider.rb', line 22 def class_name @class_name ||= name.demodulize end |
#entity_class?(source_class_name) ⇒ Boolean (private)
58 59 60 |
# File 'lib/datamappify/data/provider/common_provider.rb', line 58 def entity_class?(source_class_name) source_class_name.constantize.ancestors.include?(Datamappify::Entity) end |
#find_or_build_record_class(source_class_name) ⇒ Class
Finds or builds a data record class from the data provider
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/datamappify/data/provider/common_provider.rb', line 37 def find_or_build_record_class(source_class_name) namespace = build_or_return_namespace(source_class_name) record_class = source_class_name.safe_constantize # check for existing record class if record_class && !entity_class?(source_class_name) record_class # check for existing record class in the Datamappify::Data::Record::Provider namespace elsif namespace.const_defined?(source_class_name.demodulize, false) namespace.const_get(source_class_name.demodulize) # no existing record class is found, let's build it else build_record_class(source_class_name) end end |
#load_criterias ⇒ void
This method returns an undefined value.
Loads all the criteria files from the data provider
15 16 17 |
# File 'lib/datamappify/data/provider/common_provider.rb', line 15 def load_criterias Dir[Datamappify.root.join("data/criteria/#{path_name}/*.rb")].each { |file| require file } end |
#path_name ⇒ String
27 28 29 |
# File 'lib/datamappify/data/provider/common_provider.rb', line 27 def path_name @path_name ||= class_name.underscore end |