Class: QHash

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

Overview

Copyright © 2010-2011 Jesse Sielaff

Instance Method Summary collapse

Instance Method Details

#all?(&block) ⇒ Boolean

Returns:

  • (Boolean)


15
16
17
18
19
20
21
# File 'lib/q-language/methods/hash.rb', line 15

def all? (&block)
  value.all? do |obj|
    result = yield obj
    break result if env::break?
    result
  end
end

#any?(&block) ⇒ Boolean

Returns:

  • (Boolean)


7
8
9
10
11
12
13
# File 'lib/q-language/methods/hash.rb', line 7

def any? (&block)
  value.any? do |obj|
    result = yield obj
    break result if env::break?
    result
  end
end

#clearObject



23
24
25
# File 'lib/q-language/methods/hash.rb', line 23

def clear
  value.clear
end

#count_by(&block) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/q-language/methods/hash.rb', line 27

def count_by (&block)
  value.count do |obj|
    result = yield obj
    break result if env::break?
    result
  end
end

#cycle(&block) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/q-language/methods/hash.rb', line 35

def cycle (&block)
  value.cycle do |obj|
    result = yield obj
    break result if env::break?
    result
  end
end

#cycle_n(number, &block) ⇒ Object



43
44
45
46
47
48
49
# File 'lib/q-language/methods/hash.rb', line 43

def cycle_n (number, &block)
  value.cycle(number) do |obj|
    result = yield obj
    break result if env::break?
    result
  end
end

#delete(object) ⇒ Object



51
52
53
# File 'lib/q-language/methods/hash.rb', line 51

def delete (object)
  value.delete(object)
end

#delete_if(&block) ⇒ Object



55
56
57
58
59
60
61
# File 'lib/q-language/methods/hash.rb', line 55

def delete_if (&block)
  value.delete_if do |obj|
    result = yield obj
    break result if env::break?
    result
  end
end

#drop(number) ⇒ Object



63
64
65
66
# File 'lib/q-language/methods/hash.rb', line 63

def drop (number)
  return value.dup if number < 0
  value.drop(number)
end

#drop_while(&block) ⇒ Object



68
69
70
71
72
73
74
# File 'lib/q-language/methods/hash.rb', line 68

def drop_while (&block)
  value.drop_while do |obj|
    result = yield obj
    break result if env::break?
    result
  end
end

#each(&block) ⇒ Object



76
77
78
79
80
81
82
# File 'lib/q-language/methods/hash.rb', line 76

def each (&block)
  value.each do |obj|
    result = yield obj
    break result if env::break?
    result
  end
end

#each_cons(&block) ⇒ Object



84
85
86
87
88
89
90
91
# File 'lib/q-language/methods/hash.rb', line 84

def each_cons (&block)
  return nil unless number > 0
  
  value.each_cons do |obj|
    result = yield obj
    break result if env::break?
  end
end

#each_key(&block) ⇒ Object



93
94
95
96
97
98
99
# File 'lib/q-language/methods/hash.rb', line 93

def each_key (&block)
  value.each_key do |obj|
    result = yield obj
    break result if env::break?
    result
  end
end

#each_slice(&block) ⇒ Object



101
102
103
104
105
106
107
108
109
# File 'lib/q-language/methods/hash.rb', line 101

def each_slice (&block)
  return nil unless number > 0
  
  value.each_slice do |obj|
    result = yield obj
    break result if env::break?
    result
  end
end

#each_value(&block) ⇒ Object



111
112
113
114
115
116
117
# File 'lib/q-language/methods/hash.rb', line 111

def each_value (&block)
  value.each_value do |obj|
    result = yield obj
    break result if env::break?
    result
  end
end

#each_with_index(&block) ⇒ Object



119
120
121
122
123
124
# File 'lib/q-language/methods/hash.rb', line 119

def each_with_index (&block)
  value.each_with_index do |(k,v), i|
    result = yield [k,v,i]
    break result if env::break?
  end
end

#each_with_object(object, &block) ⇒ Object



126
127
128
129
130
131
132
133
# File 'lib/q-language/methods/hash.rb', line 126

def each_with_object (object, &block)
  value.each_with_object(object) do |(k,v), o|
    result = yield [k,v,o]
    break result if env::break?
  end
  
  object
end

#empty?Boolean

Returns:

  • (Boolean)


135
136
137
# File 'lib/q-language/methods/hash.rb', line 135

def empty?
  value.empty?
end

#find(&block) ⇒ Object



139
140
141
142
143
144
145
# File 'lib/q-language/methods/hash.rb', line 139

def find (&block)
  value.find do |obj|
    result = yield obj
    break result if env::break?
    result
  end
end

#flattenObject



147
148
149
# File 'lib/q-language/methods/hash.rb', line 147

def flatten
  value.flatten
end

#get(object) ⇒ Object



151
152
153
# File 'lib/q-language/methods/hash.rb', line 151

def get (object)
  value[object]
end

#group_by(&block) ⇒ Object



155
156
157
158
159
160
161
# File 'lib/q-language/methods/hash.rb', line 155

def group_by (&block)
  value.group_by do |obj|
    result = yield obj
    break result if env::break?
    result
  end
end

#hash?Boolean

Returns:

  • (Boolean)


163
164
165
# File 'lib/q-language/methods/hash.rb', line 163

def hash?
  value
end

#inject(object, &block) ⇒ Object



167
168
169
170
171
172
173
# File 'lib/q-language/methods/hash.rb', line 167

def inject (object, &block)
  value.inject(object) do |o,(k,v)|
    result = yield [o,k,v]
    break result if env::break?
    result
  end
end

#invertObject



175
176
177
# File 'lib/q-language/methods/hash.rb', line 175

def invert
  value.invert
end

#key(object) ⇒ Object



179
180
181
# File 'lib/q-language/methods/hash.rb', line 179

def key (object)
  value.key(object)
end

#key?(object) ⇒ Boolean

Returns:

  • (Boolean)


183
184
185
# File 'lib/q-language/methods/hash.rb', line 183

def key? (object)
  value.has_key?(object)
end

#keysObject



187
188
189
# File 'lib/q-language/methods/hash.rb', line 187

def keys
  value.keys
end

#lengthObject



191
192
193
# File 'lib/q-language/methods/hash.rb', line 191

def length
  value.length
end

#many?(&block) ⇒ Boolean

Returns:

  • (Boolean)


195
196
197
198
199
200
201
# File 'lib/q-language/methods/hash.rb', line 195

def many? (&block)
  value.count do |obj|
    result = yield obj
    return result if env::break?
    result
  end > 1
end

#map(&block) ⇒ Object



203
204
205
206
207
208
209
# File 'lib/q-language/methods/hash.rb', line 203

def map (&block)
  value.collect do |obj|
    result = yield obj
    break result if env::break?
    result
  end
end

#maxObject



211
212
213
214
215
216
# File 'lib/q-language/methods/hash.rb', line 211

def max
  value.max
rescue ArgumentError
  # Hash values cannot be compared
  nil
end

#max_by(&object) ⇒ Object



218
219
220
221
222
223
224
225
226
227
# File 'lib/q-language/methods/hash.rb', line 218

def max_by (&object)
  value.max_by do |obj|
    result = yield obj
    return result if env::break?
    result
  end
rescue ArgumentError
  # Hash values cannot be compared
  nil
end

#merge(hash) ⇒ Object



229
230
231
# File 'lib/q-language/methods/hash.rb', line 229

def merge (hash)
  value.merge(hash)
end

#merge!(hash) ⇒ Object



233
234
235
# File 'lib/q-language/methods/hash.rb', line 233

def merge! (hash)
  value.merge!(hash)
end

#minObject



237
238
239
240
241
242
# File 'lib/q-language/methods/hash.rb', line 237

def min
  value.min
rescue ArgumentError
  # Hash values cannot be compared
  nil
end

#min_by(&object) ⇒ Object



244
245
246
247
248
249
250
251
252
253
# File 'lib/q-language/methods/hash.rb', line 244

def min_by (&object)
  value.min_by do |obj|
    result = yield obj
    return result if env::break?
    result
  end
rescue ArgumentError
  # Hash values cannot be compared
  nil
end

#minmaxObject



255
256
257
258
259
260
# File 'lib/q-language/methods/hash.rb', line 255

def minmax
  value.minmax
rescue ArgumentError
  # Hash values cannot be compared
  nil
end

#minmax_by(&object) ⇒ Object



262
263
264
265
266
267
268
269
270
271
# File 'lib/q-language/methods/hash.rb', line 262

def minmax_by (&object)
  value.minmax_by do |obj|
    result = yield obj
    return result if env::break?
    result
  end
rescue ArgumentError
  # Hash values cannot be compared
  nil
end

#partition(&block) ⇒ Object



273
274
275
276
277
278
279
# File 'lib/q-language/methods/hash.rb', line 273

def partition (&block)
  value.partition do |obj|
    result = yield obj
    return result if env::break?
    result
  end
end

#reject(&block) ⇒ Object



281
282
283
284
285
286
287
# File 'lib/q-language/methods/hash.rb', line 281

def reject (&block)
  value.reject do |obj|
    result = yield obj
    break result if env::break?
    result
  end
end

#reject!(&block) ⇒ Object



289
290
291
292
293
294
295
# File 'lib/q-language/methods/hash.rb', line 289

def reject! (&block)
  value.reject! do |obj|
    result = yield obj
    break result if env::break?
    result
  end
end

#replace(hash) ⇒ Object



297
298
299
# File 'lib/q-language/methods/hash.rb', line 297

def replace (hash)
  value.replace(hash)
end

#select(&block) ⇒ Object



301
302
303
304
305
306
307
# File 'lib/q-language/methods/hash.rb', line 301

def select (&block)
  value.select do |obj|
    result = yield obj
    break result if env::break?
    result
  end
end

#select!(&block) ⇒ Object



309
310
311
312
313
314
315
# File 'lib/q-language/methods/hash.rb', line 309

def select! (&block)
  value.select! do |obj|
    result = yield obj
    break result if env::break?
    result
  end
end

#set(object_1, object_2) ⇒ Object



317
318
319
320
321
# File 'lib/q-language/methods/hash.rb', line 317

def set (object_1, object_2)
  unless value.length >= env::max_hash_length && !value.has_key?(object_1)
    value[object_1] = object_2
  end
end

#shiftObject



323
324
325
# File 'lib/q-language/methods/hash.rb', line 323

def shift
  value.shift
end

#take(number) ⇒ Object



327
328
329
330
# File 'lib/q-language/methods/hash.rb', line 327

def take (number)
  return value.dup if number < 0
  value.take(number)
end

#take_while(&block) ⇒ Object



332
333
334
335
336
337
338
# File 'lib/q-language/methods/hash.rb', line 332

def take_while (&block)
  value.take_while do |obj|
    result = yield obj
    break result if env::break?
    result
  end
end

#value?(object) ⇒ Boolean

Returns:

  • (Boolean)


340
341
342
# File 'lib/q-language/methods/hash.rb', line 340

def value? (object)
  value.has_value?(object)
end

#valuesObject



344
345
346
# File 'lib/q-language/methods/hash.rb', line 344

def values
  value.values
end

#values_at(*every_object) ⇒ Object



348
349
350
# File 'lib/q-language/methods/hash.rb', line 348

def values_at (*every_object)
  value.values_at(*every_object)
end