From 805ef21af4c97592b861f4ebf6cedca703519961 Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Mon, 26 Jul 2010 17:34:53 +0300 Subject: [PATCH] moved ruby core class extensions to separate files --- lib/redistat.rb | 3 +++ lib/redistat/date.rb | 21 +-------------------- lib/redistat/extensions/date.rb | 8 ++++++++ lib/redistat/extensions/fixnum.rb | 8 ++++++++ lib/redistat/extensions/time.rb | 29 +++++++++++++++++++++++++++++ 5 files changed, 49 insertions(+), 20 deletions(-) create mode 100644 lib/redistat/extensions/date.rb create mode 100644 lib/redistat/extensions/fixnum.rb create mode 100644 lib/redistat/extensions/time.rb diff --git a/lib/redistat.rb b/lib/redistat.rb index 331282f..60186f3 100644 --- a/lib/redistat.rb +++ b/lib/redistat.rb @@ -8,6 +8,9 @@ require "digest/sha1" require "redistat/database" require "redistat/date" require "redistat/event" +require "redistat/extensions/date" +require "redistat/extensions/time" +require "redistat/extensions/fixnum" require "redistat/key" require "redistat/label" require "redistat/model" diff --git a/lib/redistat/date.rb b/lib/redistat/date.rb index 04ffc7b..e4b258e 100644 --- a/lib/redistat/date.rb +++ b/lib/redistat/date.rb @@ -87,25 +87,6 @@ module Redistat def to_redistat Redistat::Date.new(self) end - alias :to_rs :to_redistat + alias :to_rs :to_redistat end end - - -class Date - include Redistat::DateHelper - def to_time - Time.parse(self.to_s) - end -end - -class Time - include Redistat::DateHelper -end - -class Fixnum - include Redistat::DateHelper - def to_time - Time.at(self) - end -end \ No newline at end of file diff --git a/lib/redistat/extensions/date.rb b/lib/redistat/extensions/date.rb new file mode 100644 index 0000000..e17c54f --- /dev/null +++ b/lib/redistat/extensions/date.rb @@ -0,0 +1,8 @@ +class Date + include Redistat::DateHelper + + def to_time + Time.parse(self.to_s) + end + +end diff --git a/lib/redistat/extensions/fixnum.rb b/lib/redistat/extensions/fixnum.rb new file mode 100644 index 0000000..45d4a93 --- /dev/null +++ b/lib/redistat/extensions/fixnum.rb @@ -0,0 +1,8 @@ +class Fixnum + include Redistat::DateHelper + + def to_time + Time.at(self) + end + +end diff --git a/lib/redistat/extensions/time.rb b/lib/redistat/extensions/time.rb new file mode 100644 index 0000000..b64495b --- /dev/null +++ b/lib/redistat/extensions/time.rb @@ -0,0 +1,29 @@ +class Time + include Redistat::DateHelper + + # %w[ round floor ceil ].each do |_method| + # define_method _method do |*args| + # seconds = args.first || 60 + # Time.at((self.to_f / seconds).send(_method) * seconds) + # end + # end + + DEPTHS = [:year, :month, :day, :hour, :min, :sec, :usec] + + def floor(unit, multiple = nil) + multiple ||= 1 + new_time = [] + DEPTHS.each_with_index do |depth, i| + index = DEPTHS.index(unit) + if i < index + new_time << self.send(depth) + elsif i > index + new_time << 0 + else + new_time << self.send(depth) + end + end + Time.utc(*new_time) + end + +end \ No newline at end of file