Method: Flydata::Source.component_class_for

Defined in:
lib/flydata/source.rb

.component_class_for(component_sym, de) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/flydata/source.rb', line 29

def self.component_class_for(component_sym, de)
  source_sym = DATA_ENTRY_TYPE_MAP[de['type']]
  unless source_sym
    raise "No source components are available for this data entry"
  end
  @component_classes ||= {}
  component_key = component_key(source_sym, component_sym)
  unless @component_classes.has_key?(component_key)
    require_component(source_sym, component_sym)
    unless @component_classes.has_key?(component_key)
      @component_classes[component_key] = nil
    end
  end
  klass = @component_classes[component_key]
  unless klass
    raise "Component '#{component_sym}' is not defined in source '#{source_sym}'"
  end
  klass
end