Module: Datamappify::Data::Provider::CommonProvider::ModuleMethods

Defined in:
lib/datamappify/data/provider/common_provider.rb

Instance Method Summary collapse

Instance Method Details

#build_or_return_namespace(source_class_name) ⇒ Module (private)

Builds or returns the namespace for the source class

Parameters:

  • source_class_name (String)

Returns:

  • (Module)


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_nameString

Non-namespaced class name

Returns:

  • (String)


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)

Returns:

  • (Boolean)


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

Parameters:

  • source_class_name (String)

Returns:

  • (Class)

    the data record class



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_criteriasvoid

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_nameString

Returns:

  • (String)


27
28
29
# File 'lib/datamappify/data/provider/common_provider.rb', line 27

def path_name
  @path_name ||= class_name.underscore
end

#records_namespaceModule (private)

The namespace for the data records, e.g. Datamappify::Data::Record::ActiveRecord

Returns:

  • (Module)


80
81
82
# File 'lib/datamappify/data/provider/common_provider.rb', line 80

def records_namespace
  @records_namespace ||= Data::Record.const_set(class_name, Module.new)
end