Module: Runt::DPrecision
Overview
:title:DPrecision
DPrecision
Module providing automatic precisioning of Date, DateTime, and PDate classes.
Inspired by a pattern
[http://martinfowler.com/ap2/timePoint.html] by Martin Fowler.
- Author
-
Matthew Lipper
Defined Under Namespace
Classes: Precision
Constant Summary collapse
- YEAR =
Pseudo Singletons:
Precision.year
- MONTH =
Precision.month
- WEEK =
Precision.week
- DAY =
Precision.day
- HOUR =
Precision.hour
- MIN =
Precision.min
- SEC =
Precision.sec
- MILLI =
Precision.millisec
- DEFAULT =
MIN
Class Method Summary collapse
Class Method Details
.explode(date, prec) ⇒ Object
33 34 35 36 37 38 39 40 41 |
# File 'lib/runt/dprecision.rb', line 33 def DPrecision.explode(date,prec) result = [date.year,date.month,date.day] if(date.respond_to?("hour")) result << date.hour << date.min << date.sec else result << 0 << 0 << 0 end result end |
.to_p(date, prec = DEFAULT) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/runt/dprecision.rb', line 18 def DPrecision.to_p(date,prec=DEFAULT) case prec when MIN then PDate.min(*DPrecision.explode(date,prec)) when DAY then PDate.day(*DPrecision.explode(date,prec)) when HOUR then PDate.hour(*DPrecision.explode(date,prec)) when WEEK then PDate.week(*DPrecision.explode(date,prec)) when MONTH then PDate.month(*DPrecision.explode(date,prec)) when YEAR then PDate.year(*DPrecision.explode(date,prec)) when SEC then PDate.sec(*DPrecision.explode(date,prec)) when MILLI then date #raise "Not implemented." else PDate.default(*DPrecision.explode(date,prec)) end end |