Module: Flattener

Defined in:
lib/has_helpers/flattener/base.rb,
lib/has_helpers/flattener.rb,
lib/has_helpers/flattener/pivot.rb,
lib/has_helpers/flattener/reset.rb,
lib/has_helpers/flattener/utils.rb,
lib/has_helpers/flattener/column.rb,
lib/has_helpers/flattener/resource.rb,
lib/has_helpers/flattener/attribute.rb,
lib/has_helpers/flattener/association.rb,
lib/has_helpers/flattener/column/types.rb,
lib/has_helpers/flattener/resource_generator.rb

Overview

typed: false frozen_string_literal: true

Defined Under Namespace

Modules: Pivot, Reset, ResourceGenerator, Utils Classes: Association, Attribute, Base, Column, Resource

Constant Summary collapse

@@config_ran =
false
@@config_block =
nil

Class Method Summary collapse

Class Method Details

.config(&block) ⇒ Object



41
42
43
44
# File 'lib/has_helpers/flattener.rb', line 41

def self.config(&block)
  @@config_block = block
  @@config_ran = false
end

.default_for(type) ⇒ Object



37
38
39
# File 'lib/has_helpers/flattener.rb', line 37

def self.default_for(type)
  Flattener::Base.default_for.map { |k, v| k if v.include? type }.compact
end

.for(klass) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/has_helpers/flattener.rb', line 18

def self.for(klass)
  run_config
  flattener_klass = "::Flatteners::#{klass.name}".safe_constantize
  return flattener_klass if flattener_klass
  module_name = klass.name.deconstantize.presence
  flattener_module =
    if module_name
      "::Flatteners::#{module_name}".safe_constantize ||
        module_name.split("::").reduce(::Flatteners) do |mod, name|
          mod.const_defined?(name, false) ? mod.const_get(name) : mod.const_set(name, Module.new)
        end
    else
      ::Flatteners
    end
  flattener_klass = flattener_module.const_set(klass.name.demodulize, Class.new(::Flattener::Base))

  flattener_klass
end

.run_configObject



46
47
48
49
50
# File 'lib/has_helpers/flattener.rb', line 46

def self.run_config
  return false if @@config_ran
  @@config_ran = true
  class_eval(&@@config_block) if @@config_block
end