Class: QArray
Overview
Copyright © 2010-2011 Jesse Sielaff
Instance Method Summary collapse
- #add(array) ⇒ Object
- #add_all(*every_array) ⇒ Object
- #array? ⇒ Boolean
- #at(number) ⇒ Object
- #clear ⇒ Object
- #combination(number, &block) ⇒ Object
- #compact ⇒ Object
- #compact! ⇒ Object
- #concat(array) ⇒ Object
- #count(object) ⇒ Object
- #count_by(&block) ⇒ Object
- #cycle(&block) ⇒ Object
- #cycle_n(number, &block) ⇒ Object
- #delete(object) ⇒ Object
- #delete_at(number) ⇒ Object
- #delete_if(&block) ⇒ Object
- #drop(number) ⇒ Object
- #drop_while(&block) ⇒ Object
- #each(&block) ⇒ Object
- #each_cons(number, &block) ⇒ Object
- #each_index(&block) ⇒ Object
- #each_slice(number, &block) ⇒ Object
- #each_with_index(&block) ⇒ Object
- #each_with_object(object, &block) ⇒ Object
- #empty? ⇒ Boolean
- #find(&block) ⇒ Object
- #first ⇒ Object
- #flatten ⇒ Object
- #flatten! ⇒ Object
- #group_by(&block) ⇒ Object
- #include?(object) ⇒ Boolean
- #index(object) ⇒ Object
- #index_by(&block) ⇒ Object
- #inject(object, &block) ⇒ Object
- #intersection(array) ⇒ Object
- #join(string) ⇒ Object
- #last ⇒ Object
- #last_n(number) ⇒ Object
- #length ⇒ Object
- #many?(&block) ⇒ Boolean
- #map(&block) ⇒ Object
- #map!(&block) ⇒ Object
- #max ⇒ Object
- #max_by(&object) ⇒ Object
- #min ⇒ Object
- #min_by(&object) ⇒ Object
- #minmax ⇒ Object
- #minmax_by(&object) ⇒ Object
- #none?(&block) ⇒ Boolean
- #one?(&block) ⇒ Boolean
- #partition(&block) ⇒ Object
- #permutation(number, &block) ⇒ Object
- #pop ⇒ Object
- #pop_n(number) ⇒ Object
-
#push(object) ⇒ Object
May cause segfault in Ruby 1.9.2-p290 def product (array) value.product(array) end.
- #push_all(*every_object) ⇒ Object
- #reject(&block) ⇒ Object
- #reject!(&block) ⇒ Object
- #replace(array) ⇒ Object
- #reverse ⇒ Object
- #reverse! ⇒ Object
- #reverse_each(&block) ⇒ Object
- #rindex(object) ⇒ Object
- #rotate ⇒ Object
- #rotate! ⇒ Object
- #rotate_n(number) ⇒ Object
- #rotate_n!(number) ⇒ Object
- #sample ⇒ Object
- #sample_n(number) ⇒ Object
- #second ⇒ Object
- #select(&block) ⇒ Object
- #select!(&block) ⇒ Object
- #shift ⇒ Object
- #shift_n(number) ⇒ Object
- #shuffle ⇒ Object
- #shuffle! ⇒ Object
- #sort ⇒ Object
- #sort! ⇒ Object
- #subtract(array) ⇒ Object
- #take(number) ⇒ Object
- #take_while(&block) ⇒ Object
- #third ⇒ Object
- #union(array) ⇒ Object
- #uniq ⇒ Object
- #uniq! ⇒ Object
- #unshift(object) ⇒ Object
- #unshift_all(*every_object) ⇒ Object
Instance Method Details
#add(array) ⇒ Object
7 8 9 |
# File 'lib/q-language/methods/array.rb', line 7 def add (array) value + array end |
#add_all(*every_array) ⇒ Object
11 12 13 |
# File 'lib/q-language/methods/array.rb', line 11 def add_all (*every_array) value + every_array.inject([]) {|t,a| t + a } end |
#array? ⇒ Boolean
15 16 17 |
# File 'lib/q-language/methods/array.rb', line 15 def array? value end |
#at(number) ⇒ Object
19 20 21 |
# File 'lib/q-language/methods/array.rb', line 19 def at (number) value.at(number) end |
#clear ⇒ Object
23 24 25 |
# File 'lib/q-language/methods/array.rb', line 23 def clear value.clear end |
#combination(number, &block) ⇒ Object
27 28 29 30 31 32 |
# File 'lib/q-language/methods/array.rb', line 27 def combination (number, &block) value.combination(number) do |obj| result = yield obj break result if env::break? end end |
#compact ⇒ Object
34 35 36 |
# File 'lib/q-language/methods/array.rb', line 34 def compact value.compact end |
#compact! ⇒ Object
38 39 40 41 |
# File 'lib/q-language/methods/array.rb', line 38 def compact! value.compact! value end |
#concat(array) ⇒ Object
43 44 45 |
# File 'lib/q-language/methods/array.rb', line 43 def concat (array) value.concat(array) end |
#count(object) ⇒ Object
47 48 49 |
# File 'lib/q-language/methods/array.rb', line 47 def count (object) value.count(object) end |
#count_by(&block) ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/q-language/methods/array.rb', line 51 def count_by (&block) value.count do |obj| result = yield obj break result if env::break? result end end |
#cycle(&block) ⇒ Object
59 60 61 62 63 64 |
# File 'lib/q-language/methods/array.rb', line 59 def cycle (&block) value.cycle do |obj| result = yield obj break result if env::break? end end |
#cycle_n(number, &block) ⇒ Object
66 67 68 69 70 71 |
# File 'lib/q-language/methods/array.rb', line 66 def cycle_n (number, &block) value.cycle(number) do |obj| result = yield obj break result if env::break? end end |
#delete(object) ⇒ Object
73 74 75 |
# File 'lib/q-language/methods/array.rb', line 73 def delete (object) value.delete(object) end |
#delete_at(number) ⇒ Object
77 78 79 |
# File 'lib/q-language/methods/array.rb', line 77 def delete_at (number) value.delete_at(number) end |
#delete_if(&block) ⇒ Object
81 82 83 84 85 86 87 |
# File 'lib/q-language/methods/array.rb', line 81 def delete_if (&block) value.delete_if do |obj| result = yield obj break result if env::break? result end end |
#drop(number) ⇒ Object
89 90 91 92 |
# File 'lib/q-language/methods/array.rb', line 89 def drop (number) return value.dup if number < 0 value.drop(number) end |
#drop_while(&block) ⇒ Object
94 95 96 97 98 99 100 |
# File 'lib/q-language/methods/array.rb', line 94 def drop_while (&block) value.drop_while do |obj| result = yield obj break result if env::break? result end end |
#each(&block) ⇒ Object
102 103 104 105 106 107 |
# File 'lib/q-language/methods/array.rb', line 102 def each (&block) value.each do |obj| result = yield obj break result if env::break? end end |
#each_cons(number, &block) ⇒ Object
109 110 111 112 113 114 115 116 |
# File 'lib/q-language/methods/array.rb', line 109 def each_cons (number, &block) return nil unless number > 0 value.each_cons(number) do |obj| result = yield obj break result if env::break? end end |
#each_index(&block) ⇒ Object
118 119 120 121 122 123 |
# File 'lib/q-language/methods/array.rb', line 118 def each_index (&block) value.each_index do |obj| result = yield obj break result if env::break? end end |
#each_slice(number, &block) ⇒ Object
125 126 127 128 129 130 131 132 |
# File 'lib/q-language/methods/array.rb', line 125 def each_slice (number, &block) return nil unless number > 0 value.each_slice(number) do |obj| result = yield obj break result if env::break? end end |
#each_with_index(&block) ⇒ Object
134 135 136 137 138 139 |
# File 'lib/q-language/methods/array.rb', line 134 def each_with_index (&block) value.each_with_index do |obj, i| result = yield [obj, i] break result if env::break? end end |
#each_with_object(object, &block) ⇒ Object
141 142 143 144 145 146 147 148 |
# File 'lib/q-language/methods/array.rb', line 141 def each_with_object (object, &block) value.each_with_object(object) do |obj, o| result = yield [obj,o] break result if env::break? end object end |
#empty? ⇒ Boolean
150 151 152 |
# File 'lib/q-language/methods/array.rb', line 150 def empty? value.empty? end |
#find(&block) ⇒ Object
154 155 156 157 158 159 160 |
# File 'lib/q-language/methods/array.rb', line 154 def find (&block) value.find do |obj| result = yield obj break result if env::break? result end end |
#first ⇒ Object
162 163 164 |
# File 'lib/q-language/methods/array.rb', line 162 def first value.first end |
#flatten ⇒ Object
166 167 168 169 170 171 |
# File 'lib/q-language/methods/array.rb', line 166 def flatten value.flatten rescue ArgumentError # Array is recursive value.dup end |
#flatten! ⇒ Object
173 174 175 176 177 178 |
# File 'lib/q-language/methods/array.rb', line 173 def flatten! value.flatten! rescue ArgumentError # Array is recursive value end |
#group_by(&block) ⇒ Object
180 181 182 183 184 185 186 |
# File 'lib/q-language/methods/array.rb', line 180 def group_by (&block) value.group_by do |obj| result = yield obj break result if env::break? result end end |
#include?(object) ⇒ Boolean
188 189 190 |
# File 'lib/q-language/methods/array.rb', line 188 def include? (object) value.include?(object) end |
#index(object) ⇒ Object
192 193 194 |
# File 'lib/q-language/methods/array.rb', line 192 def index (object) value.index(object) end |
#index_by(&block) ⇒ Object
196 197 198 199 200 201 202 |
# File 'lib/q-language/methods/array.rb', line 196 def index_by (&block) value.index do |obj| result = yield obj break result if env::break? result end end |
#inject(object, &block) ⇒ Object
204 205 206 207 208 209 210 |
# File 'lib/q-language/methods/array.rb', line 204 def inject (object, &block) value.inject(object) do |o, obj| result = yield [o,obj] break result if env::break? result end end |
#intersection(array) ⇒ Object
212 213 214 |
# File 'lib/q-language/methods/array.rb', line 212 def intersection (array) value & array end |
#join(string) ⇒ Object
216 217 218 219 220 221 |
# File 'lib/q-language/methods/array.rb', line 216 def join (string) value.join(string) rescue ArgumentError # Array is recursive value.dup end |
#last ⇒ Object
223 224 225 |
# File 'lib/q-language/methods/array.rb', line 223 def last value.last end |
#last_n(number) ⇒ Object
227 228 229 230 |
# File 'lib/q-language/methods/array.rb', line 227 def last_n (number) return value.dup if number < 0 value.last(number) end |
#length ⇒ Object
232 233 234 |
# File 'lib/q-language/methods/array.rb', line 232 def length value.length end |
#many?(&block) ⇒ Boolean
236 237 238 239 240 241 242 |
# File 'lib/q-language/methods/array.rb', line 236 def many? (&block) value.count do |obj| result = yield obj return result if env::break? result end > 1 end |
#map(&block) ⇒ Object
244 245 246 247 248 249 250 |
# File 'lib/q-language/methods/array.rb', line 244 def map (&block) value.map do |obj| result = yield obj return result if env::break? result end end |
#map!(&block) ⇒ Object
252 253 254 255 256 257 258 |
# File 'lib/q-language/methods/array.rb', line 252 def map! (&block) value.map! do |obj| result = yield obj return result if env::break? result end end |
#max ⇒ Object
260 261 262 263 264 265 |
# File 'lib/q-language/methods/array.rb', line 260 def max value.max rescue ArgumentError # Array elements cannot be compared nil end |
#max_by(&object) ⇒ Object
267 268 269 270 271 272 273 274 275 276 |
# File 'lib/q-language/methods/array.rb', line 267 def max_by (&object) value.max_by do |obj| result = yield obj return result if env::break? result end rescue ArgumentError # Array elements cannot be compared nil end |
#min ⇒ Object
278 279 280 281 282 283 |
# File 'lib/q-language/methods/array.rb', line 278 def min value.min rescue ArgumentError # Array elements cannot be compared nil end |
#min_by(&object) ⇒ Object
285 286 287 288 289 290 291 292 293 294 |
# File 'lib/q-language/methods/array.rb', line 285 def min_by (&object) value.min_by do |obj| result = yield obj return result if env::break? result end rescue ArgumentError # Array elements cannot be compared nil end |
#minmax ⇒ Object
296 297 298 299 300 301 |
# File 'lib/q-language/methods/array.rb', line 296 def minmax value.minmax rescue ArgumentError # Array elements cannot be compared nil end |
#minmax_by(&object) ⇒ Object
303 304 305 306 307 308 309 310 311 312 |
# File 'lib/q-language/methods/array.rb', line 303 def minmax_by (&object) value.minmax_by do |obj| result = yield obj return result if env::break? result end rescue ArgumentError # Array elements cannot be compared nil end |
#none?(&block) ⇒ Boolean
314 315 316 317 318 319 320 |
# File 'lib/q-language/methods/array.rb', line 314 def none? (&block) value.none? do |obj| result = yield obj return result if env::break? result end end |
#one?(&block) ⇒ Boolean
322 323 324 325 326 327 328 |
# File 'lib/q-language/methods/array.rb', line 322 def one? (&block) value.one? do |obj| result = yield obj return result if env::break? result end end |
#partition(&block) ⇒ Object
330 331 332 333 334 335 336 |
# File 'lib/q-language/methods/array.rb', line 330 def partition (&block) value.partition do |obj| result = yield obj return result if env::break? result end end |
#permutation(number, &block) ⇒ Object
338 339 340 341 342 343 |
# File 'lib/q-language/methods/array.rb', line 338 def permutation (number, &block) value.permutation(number) do |obj| result = yield obj break result if env::break? end end |
#pop ⇒ Object
345 346 347 |
# File 'lib/q-language/methods/array.rb', line 345 def pop value.pop end |
#pop_n(number) ⇒ Object
349 350 351 352 |
# File 'lib/q-language/methods/array.rb', line 349 def pop_n (number) return value.dup if number < 0 value.pop(number) end |
#push(object) ⇒ Object
May cause segfault in Ruby 1.9.2-p290 def product (array)
value.product(array)
end
359 360 361 |
# File 'lib/q-language/methods/array.rb', line 359 def push (object) value << object unless value.length >= env::max_array_length end |
#push_all(*every_object) ⇒ Object
363 364 365 |
# File 'lib/q-language/methods/array.rb', line 363 def push_all (*every_object) value.concat(every_object) end |
#reject(&block) ⇒ Object
367 368 369 370 371 372 373 |
# File 'lib/q-language/methods/array.rb', line 367 def reject (&block) value.reject do |obj| result = yield obj break if env::break? result end end |
#reject!(&block) ⇒ Object
375 376 377 378 379 380 381 |
# File 'lib/q-language/methods/array.rb', line 375 def reject! (&block) value.reject! do |obj| result = yield obj break if env::break? result end end |
#replace(array) ⇒ Object
383 384 385 |
# File 'lib/q-language/methods/array.rb', line 383 def replace (array) value.replace(array) end |
#reverse ⇒ Object
387 388 389 |
# File 'lib/q-language/methods/array.rb', line 387 def reverse value.reverse end |
#reverse! ⇒ Object
391 392 393 |
# File 'lib/q-language/methods/array.rb', line 391 def reverse! value.reverse! end |
#reverse_each(&block) ⇒ Object
395 396 397 398 399 400 401 |
# File 'lib/q-language/methods/array.rb', line 395 def reverse_each (&block) value.reverse_each do |obj| result = yield obj break if env::break? result end end |
#rindex(object) ⇒ Object
403 404 405 |
# File 'lib/q-language/methods/array.rb', line 403 def rindex (object) value.rindex(object) end |
#rotate ⇒ Object
407 408 409 |
# File 'lib/q-language/methods/array.rb', line 407 def rotate value.rotate end |
#rotate! ⇒ Object
411 412 413 |
# File 'lib/q-language/methods/array.rb', line 411 def rotate! value.rotate! end |
#rotate_n(number) ⇒ Object
415 416 417 |
# File 'lib/q-language/methods/array.rb', line 415 def rotate_n (number) value.rotate(number) end |
#rotate_n!(number) ⇒ Object
419 420 421 |
# File 'lib/q-language/methods/array.rb', line 419 def rotate_n! (number) value.rotate!(number) end |
#sample ⇒ Object
423 424 425 |
# File 'lib/q-language/methods/array.rb', line 423 def sample value.sample end |
#sample_n(number) ⇒ Object
427 428 429 430 |
# File 'lib/q-language/methods/array.rb', line 427 def sample_n (number) return value.dup if number < 0 value.sample(number) end |
#second ⇒ Object
432 433 434 |
# File 'lib/q-language/methods/array.rb', line 432 def second value[1] end |
#select(&block) ⇒ Object
436 437 438 439 440 441 442 |
# File 'lib/q-language/methods/array.rb', line 436 def select (&block) value.select do |obj| result = yield obj break result if env::break? result end end |
#select!(&block) ⇒ Object
444 445 446 447 448 449 450 |
# File 'lib/q-language/methods/array.rb', line 444 def select! (&block) value.select! do |obj| result = yield obj break result if env::break? result end end |
#shift ⇒ Object
452 453 454 |
# File 'lib/q-language/methods/array.rb', line 452 def shift value.shift end |
#shift_n(number) ⇒ Object
456 457 458 459 |
# File 'lib/q-language/methods/array.rb', line 456 def shift_n (number) return value.dup if number < 0 value.shift(number) end |
#shuffle ⇒ Object
461 462 463 |
# File 'lib/q-language/methods/array.rb', line 461 def shuffle value.shuffle end |
#shuffle! ⇒ Object
465 466 467 |
# File 'lib/q-language/methods/array.rb', line 465 def shuffle! value.shuffle! end |
#sort ⇒ Object
469 470 471 472 473 474 |
# File 'lib/q-language/methods/array.rb', line 469 def sort value.sort rescue ArgumentError # Array elements cannot be compared value.dup end |
#sort! ⇒ Object
476 477 478 479 480 481 |
# File 'lib/q-language/methods/array.rb', line 476 def sort! value.sort! rescue ArgumentError # Array elements cannot be compared value.dup end |
#subtract(array) ⇒ Object
483 484 485 |
# File 'lib/q-language/methods/array.rb', line 483 def subtract (array) value - array end |
#take(number) ⇒ Object
487 488 489 490 |
# File 'lib/q-language/methods/array.rb', line 487 def take (number) return value.dup if number < 0 value.take(number) end |
#take_while(&block) ⇒ Object
492 493 494 495 496 497 498 |
# File 'lib/q-language/methods/array.rb', line 492 def take_while (&block) value.take_while do |obj| result = yield obj break result if env::break? result end end |
#third ⇒ Object
500 501 502 |
# File 'lib/q-language/methods/array.rb', line 500 def third value[2] end |
#union(array) ⇒ Object
504 505 506 |
# File 'lib/q-language/methods/array.rb', line 504 def union (array) value | array end |
#uniq ⇒ Object
508 509 510 |
# File 'lib/q-language/methods/array.rb', line 508 def uniq value.uniq end |
#uniq! ⇒ Object
512 513 514 |
# File 'lib/q-language/methods/array.rb', line 512 def uniq! value.uniq! end |
#unshift(object) ⇒ Object
516 517 518 |
# File 'lib/q-language/methods/array.rb', line 516 def unshift (object) value.unshift(object) end |
#unshift_all(*every_object) ⇒ Object
520 521 522 |
# File 'lib/q-language/methods/array.rb', line 520 def unshift_all (*every_object) value.unshift(*every_object) end |