Method: Arrow::StructArrayBuilder#append_value

Defined in:
lib/arrow/struct-array-builder.rb

#append_valueObject #append_value(value) ⇒ Object

Overloads:

  • #append_valueObject

    Starts appending a struct record. You need to append values of fields.

  • #append_value(value) ⇒ Object

    Appends a struct record including values of fields.

    Parameters:

    • value (nil, ::Array, Hash)

      The struct record value.

      If this is nil, the struct record is null.

      If this is Array or Hash, they are values of fields.

Since:

  • 0.12.0



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/arrow/struct-array-builder.rb', line 60

def append_value(*args)
  n_args = args.size

  case n_args
  when 0
    append_value_raw
  when 1
    value = args[0]
    case value
    when nil
      append_null
    when ::Array
      append_value_raw
      cached_field_builders.zip(value) do |builder, sub_value|
        builder.append(sub_value)
      end
    when Hash
      append_value_raw
      local_name_to_builder = cached_name_to_builder.dup
      value.each do |name, sub_value|
        builder = local_name_to_builder.delete(name.to_s)
        builder.append(sub_value)
      end
      local_name_to_builder.each do |_, builder|
        builder.append_null
      end
    else
      message =
        "struct value must be nil, Array or Hash: #{value.inspect}"
      raise ArgumentError, message
    end
  else
    message = "wrong number of arguments (given #{n_args}, expected 0..1)"
    raise ArgumentError, message
  end
end