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
|