summaryrefslogtreecommitdiff
path: root/lib/date/format.rb
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-02-14 08:10:10 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-02-14 08:10:10 +0000
commit3044252bebc3e42530a6d90c7ef55c83e2f1ad74 (patch)
tree294db67233e143bb50e4b5a6d31333cb7b97e9a3 /lib/date/format.rb
parent3098d80818c9fbaa3b5ae392f7fad319e7a65323 (diff)
* 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/format.rb')
-rw-r--r--lib/date/format.rb19
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