diff options
Diffstat (limited to 'ruby/env.rb')
| -rw-r--r-- | ruby/env.rb | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/ruby/env.rb b/ruby/env.rb new file mode 100644 index 0000000..dfd5ec9 --- /dev/null +++ b/ruby/env.rb @@ -0,0 +1,28 @@ +class Env + attr_accessor :data + def initialize(outer=nil, binds=[], exprs=[]) + @data = {} + @outer = outer + end + + def find(key) + if @data.key? key + return self + elsif @outer + return @outer.find(key) + else + return nil + end + end + + def set(key, value) + @data[key] = value + return value + end + + def get(key) + env = find(key) + raise "'" + key.to_s + "' not found" if not env + env.data[key] + end +end |
