From 522742a4293e0ed07fdfb4837011cd98e678ca38 Mon Sep 17 00:00:00 2001 From: matz Date: Wed, 14 Feb 2007 08:10:10 +0000 Subject: * lib/date/format.rb (Date::Format::Bag::method_missing): need not to use instance variables corresponding each method; use Hash instead. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@11724 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/date/format.rb | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'lib') diff --git a/lib/date/format.rb b/lib/date/format.rb index 0a4869e3a..7a4633a63 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 -- cgit