72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
# File 'lib/factbase/terms/math.rb', line 72
def _arithmetic(op, fact, maps, fb)
assert_args(2)
lefts = _values(0, fact, maps, fb)
return nil if lefts.nil?
raise 'Too many values at first position, one expected' unless lefts.size == 1
rights = _values(1, fact, maps, fb)
return nil if rights.nil?
raise 'Too many values at second position, one expected' unless rights.size == 1
v = lefts[0]
r = rights[0]
if v.is_a?(Time) && r.is_a?(String)
(num, units) = r.split
num = num.to_i
r =
case units
when 'seconds', 'second'
num
when 'minutes', 'minute'
num * 60
when 'hours', 'hour'
num * 60 * 60
when 'days', 'day'
num * 60 * 60 * 24
when 'weeks', 'week'
num * 60 * 60 * 24 * 7
else
raise "Unknown time unit '#{units}' in '#{r}"
end
end
v.send(op, r)
end
|