Class: QDynamic
Overview
Copyright © 2010-2011 Jesse Sielaff
Constant Summary
Constants inherited
from Q_Object
Q_Object::Subclasses
Instance Method Summary
collapse
Methods inherited from QObject
#and, #array?, #block?, #break_if, #break_unless, #choose, #class?, #dup, #eq?, #eqq?, #false?, #hash?, #if, #jump_if, #jump_unless, #module?, #neq?, #nil?, #not, #number?, #or, #same?, #string?, #tally, #time?, #token?, #true?, #unless, #use, #xor
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
#def(token, &block) ⇒ Object
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/q-language/methods/dynamic.rb', line 7
def def (token, &block)
env = self.env::replicate
value.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
value.define_singleton_method(token) do |object = nil|
begin
env::frame(self) { block.call(object, env) }
rescue Q_Environment::TooManyNodes
nil
end
end
value
end
|
#dynamic? ⇒ Boolean
28
29
30
|
# File 'lib/q-language/methods/dynamic.rb', line 28
def dynamic?
value
end
|
#eval(&block) ⇒ Object
32
33
34
|
# File 'lib/q-language/methods/dynamic.rb', line 32
def eval (&block)
env::frame(value) { block.call }
end
|
#eval_arg(object, &block) ⇒ Object
36
37
38
|
# File 'lib/q-language/methods/dynamic.rb', line 36
def eval_arg (object, &block)
env::frame(value) { block.call(object) }
end
|
#extend(module_1) ⇒ Object
40
41
42
43
|
# File 'lib/q-language/methods/dynamic.rb', line 40
def extend (module_1)
value.extend(module_1) if module_1.instance_of?(Module)
value
end
|
#iget(token) ⇒ Object
45
46
47
48
49
50
|
# File 'lib/q-language/methods/dynamic.rb', line 45
def iget (token)
value.instance_variable_get(:"@#{token}")
rescue NameError
nil
end
|
#init_value ⇒ Object
52
53
54
|
# File 'lib/q-language/methods/dynamic.rb', line 52
def init_value
value.instance_variable_get(:"@init")
end
|
#instance?(class_1) ⇒ Boolean
56
57
58
|
# File 'lib/q-language/methods/dynamic.rb', line 56
def instance? (class_1)
value.instance_of?(class_1)
end
|
#is?(module_1) ⇒ Boolean
60
61
62
|
# File 'lib/q-language/methods/dynamic.rb', line 60
def is? (module_1)
value.is_a?(module_1)
end
|
#iset(token, object) ⇒ Object
64
65
66
67
68
69
|
# File 'lib/q-language/methods/dynamic.rb', line 64
def iset (token, object)
value.instance_variable_set(:"@#{token}", object)
rescue NameError
nil
end
|
71
72
73
|
# File 'lib/q-language/methods/dynamic.rb', line 71
def metaclass
value.class
end
|
#send(token) ⇒ Object
75
76
77
|
# File 'lib/q-language/methods/dynamic.rb', line 75
def send (token)
value.__send__(:"__Q_#{token}__", nil) rescue nil
end
|
#send_arg(token, object) ⇒ Object
79
80
81
|
# File 'lib/q-language/methods/dynamic.rb', line 79
def send_arg (token, object)
value.__send__(:"__Q_#{token}__", object) rescue value
end
|