Sha256: 6c8052876892eaf96b0fbacf58fbc3b224b9387718f65e9872094664cb3c9a0a
Contents?: true
Size: 1.23 KB
Versions: 2
Compression:
Stored size: 1.23 KB
Contents
module Dentaku class DateArithmetic def initialize(date) @base = date end def add(duration) case duration when Numeric @base + duration when Dentaku::AST::Duration::Value case duration.unit when :year Time.local(@base.year + duration.value, @base.month, @base.day).to_datetime when :month @base >> duration.value when :day @base + duration.value end else raise Dentaku::ArgumentError.for(:incompatible_type, value: duration, for: Numeric), "'#{duration || duration.class}' is not coercible for date arithmetic" end end def sub(duration) case duration when Numeric @base - duration when Dentaku::AST::Duration::Value case duration.unit when :year Time.local(@base.year - duration.value, @base.month, @base.day).to_datetime when :month @base << duration.value when :day @base - duration.value end else raise Dentaku::ArgumentError.for(:incompatible_type, value: duration, for: Numeric), "'#{duration || duration.class}' is not coercible for date arithmetic" end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dentaku-3.3.4 | lib/dentaku/date_arithmetic.rb |
dentaku-3.3.3 | lib/dentaku/date_arithmetic.rb |