Class: Subaltern::Context
- Inherits:
-
Object
- Object
- Subaltern::Context
- Defined in:
- lib/subaltern/context.rb
Overview
Variable scope.
Instance Attribute Summary collapse
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
Instance Method Summary collapse
- #[](key) ⇒ Object
- #[]=(key, value) ⇒ Object
-
#eval(source) ⇒ Object
Eval a piece of Ruby code within this context.
-
#has_key?(key) ⇒ Boolean
Warning : shallow (doesn’t lookup in parent context).
-
#initialize(parent = {}, vars = nil) ⇒ Context
constructor
Create a new context.
Constructor Details
#initialize(parent = {}, vars = nil) ⇒ Context
Create a new context
c = Subaltern.new
# or
c = Subaltern.new('var0' => 'value0', 'var1' => [ 1, 2, 3 ])
39 40 41 42 43 44 45 |
# File 'lib/subaltern/context.rb', line 39 def initialize(parent={}, vars=nil) vars.merge!(Subaltern.kernel) if parent.nil? @parent, @variables = [ parent, vars ] @parent, @variables = [ nil, parent ] if vars.nil? end |
Instance Attribute Details
#parent ⇒ Object (readonly)
Returns the value of attribute parent.
31 32 33 |
# File 'lib/subaltern/context.rb', line 31 def parent @parent end |
Instance Method Details
#[](key) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/subaltern/context.rb', line 47 def [](key) return @variables[key] if @variables.has_key?(key) return @parent[key] if @parent raise UndefinedVariableError.new(key) end |
#[]=(key, value) ⇒ Object
55 56 57 58 59 60 |
# File 'lib/subaltern/context.rb', line 55 def []=(key, value) @variables[key] = value unless set(key, value) value end |
#eval(source) ⇒ Object
Eval a piece of Ruby code within this context.
71 72 73 74 75 76 77 78 |
# File 'lib/subaltern/context.rb', line 71 def eval(source) begin Subaltern.eval_tree(self, RubyParser.new.parse(source).to_a) rescue Return => r r.value end end |
#has_key?(key) ⇒ Boolean
Warning : shallow (doesn’t lookup in parent context)
64 65 66 67 |
# File 'lib/subaltern/context.rb', line 64 def has_key?(key) @variables.has_key?(key) end |