Current section
Files
Jump to
Current section
Files
lib/delorean.ex
defmodule Delorean do
import FluxCapacitor
def travel(present, day: day) when day > 0 do
cascade_forward({present.year, present.month, present.day + day}) |> Date.from_erl
end
def travel(present, month: month) when month > 0 do
cascade_forward({present.year, present.month + month, present.day}) |> Date.from_erl
end
def travel(present, year: year) when year > 0 do
cascade_forward({present.year + year, present.month, present.day}) |> Date.from_erl
end
def travel(present, day: day) when day < 0 do
cascade_backward({present.year, present.month, present.day + day}) |> Date.from_erl
end
def travel(present, month: month) when month < 0 do
cascade_backward({present.year, present.month + month, present.day}) |> Date.from_erl
end
def travel(present, year: year) when year < 0 do
cascade_backward({present.year + year, present.month, present.day}) |> Date.from_erl
end
def travel!(present, opts) do
{:ok, destination} = travel(present, opts)
destination
end
def compare(date1, date2) do
with 0 <- compare_map_key(date1, date2, :year),
0 <- compare_map_key(date1, date2, :month),
0 <- compare_map_key(date1, date2, :day)
do
0
end
end
def compare_map_key(item1, item2, key) do
a = Map.get(item1, key)
b = Map.get(item2, key)
cond do
a == b -> 0
a > b -> 1
a < b -> -1
end
end
end