class TextExtractor::Record::FactoryAnalyzer
converts the value of the factory option to a constructor proc
Public Class Methods
new(factory)
click to toggle source
# File lib/text_extractor/record.rb, line 102 def initialize(factory) @params = nil case factory when Hash @klass, @params = factory.first else @klass = factory end end
Public Instance Methods
to_proc()
click to toggle source
# File lib/text_extractor/record.rb, line 113 def to_proc if @params explicit elsif @klass.respond_to?(:call) @klass elsif @klass implicit end end
Private Instance Methods
explicit()
click to toggle source
# File lib/text_extractor/record.rb, line 125 def explicit case @params when Array positional when Set keyword end end
implicit()
click to toggle source
# File lib/text_extractor/record.rb, line 147 def implicit if @klass.ancestors.include?(Struct) ->(extracted) { @klass.new(*extracted.values) } else ->(extracted) { @klass.new(**extracted) } end end
keyword()
click to toggle source
# File lib/text_extractor/record.rb, line 138 def keyword lambda do |extracted| values = @params.each_with_object({}) do |param, hash| hash[param] = extracted[param] end @klass.new(**values) end end
positional()
click to toggle source
# File lib/text_extractor/record.rb, line 134 def positional ->(extracted) { @klass.new(*extracted.values_at(*@params)) } end