Sha256: d4d518959d1cbb9f9ae208a11e8f6a0488ac2f095effb1c1589c244734fe1ba2
Contents?: true
Size: 1.97 KB
Versions: 1
Compression:
Stored size: 1.97 KB
Contents
# Copyright:: (c) Autotelik Media Ltd 2015 # Author :: Tom Statter # License:: MIT # # Details:: Creates, configures and caches Populator objects for use by current context # module DataShift class PopulatorFactory class << self; attr_accessor :config end # Clear out map of operators to populator Class def self.clear_populators populators.clear end # Return map of operators to populator Class def self.populators @populators ||= {} end # Options : # formatter # populator # def self.configure(load_object_class, yaml_file) @config = YAML.load( ERB.new( IO.read(yaml_file) ).result ) @config[:datashift_populators].each do |_operator, type| populator = ::Object.const_get(type).new populator.configure_from(load_object_class, yaml_file) populators[@config[:datashift_populators]] end if @config[:datashift_populators] end # Move to CONTEXT # @populator = if(options[:populator].is_a?(String)) # ::Object.const_get(options[:populator]).new # elsif(options[:populator].is_a?(Class)) # options[:populator].new # else # DataShift::Populator.new # end # Set a Populator to be used against an INBOUND operator class << self attr_writer :global_populator_class end def self.global_populator_class @global_populator_class || DataShift::Populator end def self.set_populator(method_binding, klass) operator = method_binding.is_a?(DataShift::MethodBinding) ? method_binding.operator : method_binding populators[operator] = klass end def self.get_populator(method_binding) if(populators.key?(method_binding.operator)) return populators[method_binding.operator].new end unless method_binding.nil? || method_binding.invalid? global_populator_class.new end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
datashift-0.40.1 | lib/datashift/populator_factory.rb |