diff options
| author | Joel Martin <github@martintribe.org> | 2014-04-10 21:12:17 -0500 |
|---|---|---|
| committer | Joel Martin <github@martintribe.org> | 2014-04-10 21:12:17 -0500 |
| commit | b5f469de182a3e95b2d968ddccf2e2f9b77a3dc2 (patch) | |
| tree | 04052d317166c09058ebac414e9cfdc7825fa038 /ruby/env.rb | |
| parent | 136e5690eec17aa90c35e3fccd8ad6100acd9356 (diff) | |
| download | mal-b5f469de182a3e95b2d968ddccf2e2f9b77a3dc2.tar.gz mal-b5f469de182a3e95b2d968ddccf2e2f9b77a3dc2.zip | |
Ruby: add step3
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 |
