From 3449e0710cb104d8621f9bc6b66b0e9d0321dc4e Mon Sep 17 00:00:00 2001 From: tadf Date: Sat, 19 Jan 2008 09:42:44 +0000 Subject: * 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 --- ChangeLog | 5 +++++ lib/date.rb | 11 +++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3f4929fc55..be491896bf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sat Jan 19 18:40:19 2008 Tadayoshi Funaba + + * lib/date.rb (once): use an instance variable which points a hash + as cache. [experimental] + Sat Jan 19 17:21:29 2008 Tadayoshi Funaba * lib/date.rb, lib/date/format.rb: parse's hints as an 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 -- cgit v1.2.3