Module: ZohoService

Defined in:
lib/zoho_service.rb,
lib/zoho_service/base.rb,
lib/zoho_service/version.rb,
lib/zoho_service/api_connector.rb,
lib/zoho_service/api_collection.rb

Defined Under Namespace

Classes: ApiCollection, ApiConnector, Base

Constant Summary collapse

VERSION =
"0.0.1"

Class Method Summary collapse

Class Method Details

.init_models_recursion(recursion, tree, parent_class) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/zoho_service.rb', line 18

def self.init_models_recursion(recursion, tree, parent_class)
  raise("Too deep recursion in init_models_recursion in ZohoService gem") unless recursion && recursion > 0
  raise("Need parent class in init_models_recursion in ZohoService gem") unless parent_class
  parent_name = parent_class.name.demodulize.underscore
  models = tree.map { |m| m.kind_of?(Array) ? { name: m.first, childs: m.second, params: m.third } : { name: m } }
  models.each do |model|
    # puts "\n try init parent_name2=[#{parent_name}] recursion=[#{recursion}] mod=[#{model.to_json}] \n"
    current_class = nil
    if const_defined?(model[:name])
      current_class = const_get(model[:name])
    else
      current_class = Class.new(Base)
      const_set(model[:name], current_class)
      current_class.model_params = model[:params]
      current_class.default_parent_name = parent_name
    end
    current_class.send(:define_method, parent_name) { |params = {}| get_parent(__method__, params) }
    parent_class.send(:define_method, ZohoService::name_to_many(model[:name])) do
      get_childs(__method__.to_sym, current_class)
    end
    init_models_recursion(recursion - 1, model[:childs], current_class) if model[:childs]
  end
  parent_class.class.send(:define_method, 'childs_list') { models.map { |x| x[:name] }.sort }
end

.many_to_name(models_name) ⇒ Object



14
15
16
# File 'lib/zoho_service.rb', line 14

def self.many_to_name(models_name)
  models_name.to_s.singularize.camelize
end

.name_to_many(model_name) ⇒ Object



10
11
12
# File 'lib/zoho_service.rb', line 10

def self.name_to_many(model_name)
  model_name.to_s.pluralize.underscore
end