Class: QArray

Inherits:
QObject
  • Object
show all
Defined in:
lib/q-language/methods/array.rb

Overview

Copyright © 2010-2011 Jesse Sielaff

Instance Method Summary collapse

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

Returns:

  • (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

#clearObject



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

#compactObject



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

Returns:

  • (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

#firstObject



162
163
164
# File 'lib/q-language/methods/array.rb', line 162

def first
  value.first
end

#flattenObject



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

Returns:

  • (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

#lastObject



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

#lengthObject



232
233
234
# File 'lib/q-language/methods/array.rb', line 232

def length
  value.length
end

#many?(&block) ⇒ Boolean

Returns:

  • (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

#maxObject



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

#minObject



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

#minmaxObject



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

Returns:

  • (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

Returns:

  • (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

#popObject



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

#reverseObject



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

#rotateObject



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

#sampleObject



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

#secondObject



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

#shiftObject



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

#shuffleObject



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

#sortObject



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

#thirdObject



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

#uniqObject



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