Class: QImplicit

Inherits:
Q_Object show all
Defined in:
lib/q-language/methods/implicit.rb

Overview

Copyright © 2010-2011 Jesse Sielaff

Constant Summary

Constants inherited from Q_Object

Q_Object::Subclasses

Instance Method Summary collapse

Methods inherited from Q_Object

class_name, #env, inherited, #initialize, method_added, method_names, #to_q, #to_qliteral, #value

Constructor Details

This class inherits a constructor from Q_Object

Instance Method Details

#all?(&block) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#any?(&block) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#arrayObject



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

def array
  []
end

#arrays(*every_array) ⇒ Object



27
28
29
# File 'lib/q-language/methods/implicit.rb', line 27

def arrays (*every_array)
  every_array
end

#block(&block) ⇒ Object



31
32
33
# File 'lib/q-language/methods/implicit.rb', line 31

def block (&block)
  block
end

#blocks(*every_block) ⇒ Object



35
36
37
# File 'lib/q-language/methods/implicit.rb', line 35

def blocks (*every_block)
  every_block
end

#break_if(&block) ⇒ Object



39
40
41
42
43
44
45
46
# File 'lib/q-language/methods/implicit.rb', line 39

def break_if (&block)
  if result = yield
    env::break!
    return nil
  end
  
  result
end

#break_unless(&block) ⇒ Object



48
49
50
51
52
53
54
55
# File 'lib/q-language/methods/implicit.rb', line 48

def break_unless (&block)
  unless result = yield
    env::break!
    return nil
  end
  
  result
end

#classObject



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

def class
  klass = Class.new
  klass.send(:define_method, :to_q) { QDynamic.new(self) }
  klass
end

#classes(*every_class) ⇒ Object



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

def classes (*every_class)
  every_class
end

#compactObject



67
68
69
# File 'lib/q-language/methods/implicit.rb', line 67

def compact
  value.compact
end

#compact!Object



71
72
73
74
# File 'lib/q-language/methods/implicit.rb', line 71

def compact!
  value.compact!
  value.dup
end

#count(object) ⇒ Object



76
77
78
# File 'lib/q-language/methods/implicit.rb', line 76

def count (object)
  value.count(object)
end

#count_by(&block) ⇒ Object



80
81
82
83
84
85
86
# File 'lib/q-language/methods/implicit.rb', line 80

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

#def(token, &block) ⇒ Object



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/q-language/methods/implicit.rb', line 88

def def (token, &block)
  env_object = env::object
  env = self.env::replicate
  
  env_object.define_singleton_method(:"__Q_#{token}__") do |object = nil|
    env::frame(self) { block.call(object, env) }
  end
  
  env = self.env::replicate
  env.max_nodes = self.env.max_method_nodes
  
  env_object.define_singleton_method(token) do |object = nil|
    begin
      env::frame(self) { block.call(object, env) }
    rescue Q_Environment::TooManyNodes
      nil
    end
  end
  
  env_object
end

#eObject



110
111
112
# File 'lib/q-language/methods/implicit.rb', line 110

def e
  Number.e
end

#each(&block) ⇒ Object



114
115
116
117
118
119
120
# File 'lib/q-language/methods/implicit.rb', line 114

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

#elect(*every_object, object) ⇒ Object



122
123
124
# File 'lib/q-language/methods/implicit.rb', line 122

def elect (*every_object, object)
  object
end

#falseObject



126
127
128
# File 'lib/q-language/methods/implicit.rb', line 126

def false
  false
end

#falses(*every_false) ⇒ Object



130
131
132
# File 'lib/q-language/methods/implicit.rb', line 130

def falses (*every_false)
  every_false
end

#hashObject



134
135
136
# File 'lib/q-language/methods/implicit.rb', line 134

def hash
  {}
end

#hashes(*every_hash) ⇒ Object



138
139
140
# File 'lib/q-language/methods/implicit.rb', line 138

def hashes (*every_hash)
  every_hash
end

#iObject



142
143
144
# File 'lib/q-language/methods/implicit.rb', line 142

def i
  Number.i
end

#jump_if(&block) ⇒ Object



146
147
148
149
150
151
152
153
# File 'lib/q-language/methods/implicit.rb', line 146

def jump_if (&block)
  if result = yield
    env::jump!
    return nil
  end
  
  result
end

#jump_unless(&block) ⇒ Object



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

def jump_unless (&block)
  unless result = yield
    env::jump!
    return nil
  end
  
  result
end

#loop(&block) ⇒ Object



164
165
166
167
168
169
# File 'lib/q-language/methods/implicit.rb', line 164

def loop (&block)
  begin
    result = yield
    return result if env::break?
  end while true
end

#many?(&block) ⇒ Boolean

Returns:

  • (Boolean)


179
180
181
182
183
184
185
# File 'lib/q-language/methods/implicit.rb', line 179

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

#map(&block) ⇒ Object



171
172
173
174
175
176
177
# File 'lib/q-language/methods/implicit.rb', line 171

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

#moduleObject



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

def module
  Module.new
end

#modules(*every_module) ⇒ Object



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

def modules (*every_module)
  every_module
end

#nanObject



195
196
197
# File 'lib/q-language/methods/implicit.rb', line 195

def nan
  Number.nan
end

#neg_infObject



199
200
201
# File 'lib/q-language/methods/implicit.rb', line 199

def neg_inf
  Number.neg_inf
end

#neg_oneObject



203
204
205
# File 'lib/q-language/methods/implicit.rb', line 203

def neg_one
  -1
end

#newObject



207
208
209
210
211
# File 'lib/q-language/methods/implicit.rb', line 207

def new
  klass = Class.new
  klass.send(:define_method, :to_q) { QDynamic.new(self) }
  klass.new
end

#newlineObject



213
214
215
# File 'lib/q-language/methods/implicit.rb', line 213

def newline
  ?\n
end

#nilObject



217
218
219
# File 'lib/q-language/methods/implicit.rb', line 217

def nil
  nil
end

#nils(*every_nil) ⇒ Object



221
222
223
# File 'lib/q-language/methods/implicit.rb', line 221

def nils (*every_nil)
  every_nil
end

#none?(&block) ⇒ Boolean

Returns:

  • (Boolean)


225
226
227
228
229
230
231
# File 'lib/q-language/methods/implicit.rb', line 225

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

#nowObject



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

def now
  Time.now
end

#numbers(*every_number) ⇒ Object



237
238
239
# File 'lib/q-language/methods/implicit.rb', line 237

def numbers (*every_number)
  every_number
end

#objects(*every_object) ⇒ Object



241
242
243
# File 'lib/q-language/methods/implicit.rb', line 241

def objects (*every_object)
  every_object
end

#oneObject



245
246
247
# File 'lib/q-language/methods/implicit.rb', line 245

def one
  1
end

#one?(&block) ⇒ Boolean

Returns:

  • (Boolean)


249
250
251
252
253
254
255
# File 'lib/q-language/methods/implicit.rb', line 249

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

#piObject



257
258
259
# File 'lib/q-language/methods/implicit.rb', line 257

def pi
  Number.pi
end

#pos_infObject



261
262
263
# File 'lib/q-language/methods/implicit.rb', line 261

def pos_inf
  Number.pos_inf
end

#selfObject



265
266
267
# File 'lib/q-language/methods/implicit.rb', line 265

def self
  env::self
end

#skip_a(object_1, object_2) ⇒ Object



269
270
271
# File 'lib/q-language/methods/implicit.rb', line 269

def skip_a (object_1, object_2)
  object_2
end

#skip_b(object_1, object_2) ⇒ Object



273
274
275
# File 'lib/q-language/methods/implicit.rb', line 273

def skip_b (object_1, object_2)
  object_1
end

#spaceObject



277
278
279
# File 'lib/q-language/methods/implicit.rb', line 277

def space
  ' '
end

#stringObject



281
282
283
# File 'lib/q-language/methods/implicit.rb', line 281

def string
  ''
end

#strings(*every_string) ⇒ Object



285
286
287
# File 'lib/q-language/methods/implicit.rb', line 285

def strings (*every_string)
  every_string
end

#tabObject



289
290
291
# File 'lib/q-language/methods/implicit.rb', line 289

def tab
  ?\t
end

#threeObject



293
294
295
# File 'lib/q-language/methods/implicit.rb', line 293

def three
  3
end

#times(*every_time) ⇒ Object



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

def times (*every_time)
  every_time
end

#tokens(*every_token) ⇒ Object



301
302
303
# File 'lib/q-language/methods/implicit.rb', line 301

def tokens (*every_token)
  every_token
end

#trueObject



305
306
307
# File 'lib/q-language/methods/implicit.rb', line 305

def true
  true
end

#trues(*every_true) ⇒ Object



309
310
311
# File 'lib/q-language/methods/implicit.rb', line 309

def trues (*every_true)
  every_true
end

#twoObject



313
314
315
# File 'lib/q-language/methods/implicit.rb', line 313

def two
  2
end

#uniqObject



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

def uniq
  value.uniq
end

#uniq!Object



321
322
323
324
# File 'lib/q-language/methods/implicit.rb', line 321

def uniq!
  value.uniq!
  value.dup
end

#unsetObject



326
327
328
# File 'lib/q-language/methods/implicit.rb', line 326

def unset
  env::unset(env::last_assigned_variable)
end

#until(&block) ⇒ Object



330
331
332
333
334
# File 'lib/q-language/methods/implicit.rb', line 330

def until (&block)
  until result = yield
    return result if env::break?
  end
end

#while(&block) ⇒ Object



336
337
338
339
340
# File 'lib/q-language/methods/implicit.rb', line 336

def while (&block)
  while result = yield
    return result if env::break?
  end
end

#zeroObject



342
343
344
# File 'lib/q-language/methods/implicit.rb', line 342

def zero
  0
end