class BqGuess::Guesser
Attributes
record[R]
Public Class Methods
guess(record)
click to toggle source
# File lib/bq_guess/guesser.rb, line 17 def guess(record) new(record).guess end
guess_records(records)
click to toggle source
# File lib/bq_guess/guesser.rb, line 11 def guess_records(records) records[1..-1].each_with_object(guess(records.first)) do |record, schema| schema.merge!(guess(record)) end end
new(record)
click to toggle source
# File lib/bq_guess/guesser.rb, line 22 def initialize(record) @record = record end
Public Instance Methods
guess()
click to toggle source
# File lib/bq_guess/guesser.rb, line 26 def guess record.each_with_object(Schema.new) do |(key, value), schema| schema[key] = guess_field(key, value) end end
Private Instance Methods
guess_field(key, value)
click to toggle source
# File lib/bq_guess/guesser.rb, line 34 def guess_field(key, value) case value when TrueClass, FalseClass Fields::Boolean.new(key) when Float Fields::Float.new(key) when Integer Fields::Integer.new(key) when NilClass Fields::Null.new(key) when Hash Fields::Record.new(key, self.class.guess(value)) when String Fields::String.new(key) when Array guess_field(key, value.first).tap(&:repeated!) end end