From b5f469de182a3e95b2d968ddccf2e2f9b77a3dc2 Mon Sep 17 00:00:00 2001 From: Joel Martin Date: Thu, 10 Apr 2014 21:12:17 -0500 Subject: Ruby: add step3 --- ruby/env.rb | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 ruby/env.rb (limited to 'ruby/env.rb') 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 -- cgit v1.2.3