summaryrefslogtreecommitdiff
path: root/lib/date.rb
diff options
context:
space:
mode:
authortadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-19 09:42:44 +0000
committertadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-19 09:42:44 +0000
commit3449e0710cb104d8621f9bc6b66b0e9d0321dc4e (patch)
tree018527b7a45e6bd412237c4b227cbfee06b9648f /lib/date.rb
parentbf031c96998f1b98c91722f22249a32ffa2aadf0 (diff)
* lib/date.rb (once): use an instance variable which points a hash
as cache. [experimental] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15126 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/date.rb')
-rw-r--r--lib/date.rb11
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/date.rb b/lib/date.rb
index b20636481a..63d6324eef 100644
--- a/lib/date.rb
+++ b/lib/date.rb
@@ -1101,13 +1101,13 @@ class Date
class << self
- def once(*ids) # :nodoc:
+ def once(*ids) # :nodoc: -- restricted
for id in ids
module_eval <<-"end;"
alias_method :__#{id.to_i}__, :#{id.to_s}
private :__#{id.to_i}__
- def #{id.to_s}(*args, &block)
- (@__#{id.to_i}__ ||= [__#{id.to_i}__(*args, &block)])[0]
+ def #{id.to_s}(*args)
+ @__ca__[#{id.to_i}] ||= __#{id.to_i}__(*args)
end
end;
end
@@ -1136,7 +1136,10 @@ class Date
#
# Using one of the factory methods such as Date::civil is
# generally easier and safer.
- def initialize(ajd=0, of=0, sg=ITALY) @ajd, @of, @sg = ajd, of, sg end
+ def initialize(ajd=0, of=0, sg=ITALY)
+ @ajd, @of, @sg = ajd, of, sg
+ @__ca__ = {}
+ end
# Get the date as an Astronomical Julian Day Number.
def ajd() @ajd end