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 |