diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-02-14 08:10:10 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-02-14 08:10:10 +0000 |
commit | 3044252bebc3e42530a6d90c7ef55c83e2f1ad74 (patch) | |
tree | 294db67233e143bb50e4b5a6d31333cb7b97e9a3 /lib/date | |
parent | 3098d80818c9fbaa3b5ae392f7fad319e7a65323 (diff) | |
download | ruby-3044252bebc3e42530a6d90c7ef55c83e2f1ad74.tar.gz |
* lib/date/format.rb (Date::Format::Bag::method_missing): need not
to use instance variables corresponding each method; use Hash
instead.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11724 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/date')
-rw-r--r-- | lib/date/format.rb | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/lib/date/format.rb b/lib/date/format.rb index 0a4869e3a1..7a4633a638 100644 --- a/lib/date/format.rb +++ b/lib/date/format.rb @@ -95,24 +95,23 @@ class Date end class Bag # :nodoc: + def initialize + @_dict = {} + end def method_missing(t, *args, &block) - t = t.to_s - set = t.chomp!('=') - t = '@v' + t - if set - instance_variable_set(t, *args) + if /=$/ =~ t + t = t.to_s.chomp('=').to_sym + @_dict[t] = args[0] else - if instance_variables.include?(t) - instance_variable_get(t) + if @_dict.key?(t) + @_dict[t] end end end def to_hash - instance_variables. - select{|n| !instance_variable_get(n).nil?}.grep(/\A@v[^_]/). - inject({}){|r, n| r[n[2..-1].intern] = instance_variable_get(n); r} + @_dict.reject{|k,v| /^_/ =~ k} end end |