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_config ⇒ Object
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
|