Class: Arrow::Array
Class Method Summary
collapse
Instance Method Summary
collapse
included, #take_generic
#filter_generic, included
Class Method Details
.builder_class ⇒ Object
32
33
34
35
36
|
# File 'lib/arrow/array.rb', line 32
def builder_class
builder_class_name = "#{name}Builder"
return nil unless const_defined?(builder_class_name)
const_get(builder_class_name)
end
|
.new(*args) ⇒ Object
25
26
27
28
29
30
|
# File 'lib/arrow/array.rb', line 25
def new(*args)
_builder_class = builder_class
return super if _builder_class.nil?
return super unless _builder_class.buildable?(args)
_builder_class.build(*args)
end
|
Instance Method Details
#+(other_array) ⇒ Object
Concatenates the given other array to the array.
If you have multiple arrays to be concatenated, you should use #concatenate to concatenate multiple arrays at once.
161
162
163
|
# File 'lib/arrow/array.rb', line 161
def +(other_array)
concatenate(other_array)
end
|
#[](i) ⇒ Object?
Returns The ‘i`-th value.
‘nil` for NULL value or out of range `i`.
48
49
50
51
52
53
54
55
56
|
# File 'lib/arrow/array.rb', line 48
def [](i)
i += length if i < 0
return nil if i < 0 or i >= length
if null?(i)
nil
else
get_value(i)
end
end
|
#concatenate(*other_arrays) ⇒ Object
Concatenates the given other arrays to the array.
136
137
138
139
140
141
|
# File 'lib/arrow/array.rb', line 136
def concatenate(*other_arrays)
other_arrays = other_arrays.collect do |other_array|
resolve(other_array)
end
concatenate_raw(other_arrays)
end
|
#concatenate_raw ⇒ Object
This method is part of a private API.
You should avoid using this method if possible, as it may be removed or be changed in the future.
117
|
# File 'lib/arrow/array.rb', line 117
alias_method :concatenate_raw, :concatenate
|
#each ⇒ Object
70
71
72
73
74
75
76
|
# File 'lib/arrow/array.rb', line 70
def each
return to_enum(__method__) unless block_given?
length.times do |i|
yield(self[i])
end
end
|
#equal_array?(other, options = nil) ⇒ Boolean
Returns ‘true` if both of them have the same data, `false` otherwise.
66
67
68
|
# File 'lib/arrow/array.rb', line 66
def equal_array?(other, options=nil)
equal_options(other, options)
end
|
#is_in(values) ⇒ Object
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/arrow/array.rb', line 100
def is_in(values)
case values
when ::Array
if self.class.builder_class.buildable?([values])
values = self.class.new(values)
else
values = self.class.new(value_data_type, values)
end
is_in_raw(values)
when ChunkedArray
is_in_chunked_array(values)
else
is_in_raw(values)
end
end
|
#is_in_raw ⇒ Object
99
|
# File 'lib/arrow/array.rb', line 99
alias_method :is_in_raw, :is_in
|
#resolve(other_raw_array) ⇒ Arrow::Array
#resolve(other_array) ⇒ Arrow::Array
Ensures returning the same data type array from the given array.
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
|
# File 'lib/arrow/array.rb', line 202
def resolve(other_array)
if other_array.is_a?(::Array)
builder_class = self.class.builder_class
if builder_class.nil?
message =
"[array][resolve] can't build #{value_data_type} array " +
"from raw Ruby Array"
raise ArgumentError, message
end
if builder_class.buildable?([other_array])
other_array = builder_class.build(other_array)
elsif builder_class.buildable?([value_data_type, other_array])
other_array = builder_class.build(value_data_type, other_array)
else
message =
"[array][resolve] need to implement " +
"a feature that building #{value_data_type} array " +
"from raw Ruby Array"
raise NotImpelemented, message
end
other_array
elsif other_array.respond_to?(:value_data_type)
return other_array if value_data_type == other_array.value_data_type
other_array.cast(value_data_type)
else
message =
"[array][resolve] can't build #{value_data_type} array: " +
"#{other_array.inspect}"
raise ArgumentError, message
end
end
|
#reverse_each ⇒ Object
78
79
80
81
82
83
84
|
# File 'lib/arrow/array.rb', line 78
def reverse_each
return to_enum(__method__) unless block_given?
(length - 1).downto(0) do |i|
yield(self[i])
end
end
|
#to_a ⇒ Object
95
96
97
|
# File 'lib/arrow/array.rb', line 95
def to_a
values
end
|
#to_arrow ⇒ Object
86
87
88
|
# File 'lib/arrow/array.rb', line 86
def to_arrow
self
end
|
#value_data_type ⇒ Object
91
92
93
|
# File 'lib/arrow/array.rb', line 91
def value_data_type
@value_data_type ||= value_data_type_raw
end
|
#value_data_type_raw ⇒ Object
90
|
# File 'lib/arrow/array.rb', line 90
alias_method :value_data_type_raw, :value_data_type
|