aboutsummaryrefslogtreecommitdiff
path: root/src/Model/Date.hs
diff options
context:
space:
mode:
authorJoris Guyonvarch2014-04-06 22:55:16 +0200
committerJoris2019-05-01 15:34:22 +0200
commit0fe906ae7453aa684e998bbcc7a78b62d84f0206 (patch)
treed3968af830b964193349187fb6fc583780cd0ce3 /src/Model/Date.hs
parent8b11c4be2b3ac354fa14534662dbd92374617a3e (diff)
Show resume and projects from a configuration file
Diffstat (limited to 'src/Model/Date.hs')
-rw-r--r--src/Model/Date.hs30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/Model/Date.hs b/src/Model/Date.hs
new file mode 100644
index 0000000..7edb6fb
--- /dev/null
+++ b/src/Model/Date.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE DeriveGeneric #-}
+
+module Model.Date where
+
+import GHC.Generics
+import Data.Yaml
+
+data Date = Date
+ { month :: Int
+ , year :: Int
+ } deriving (Show, Read, Eq, Generic)
+
+yearAndMonthDiff :: Date -> Date -> (Int, Int)
+yearAndMonthDiff d1 d2 =
+ let totalMonths = monthDiff d1 d2
+ in (totalMonths `div` 12, totalMonths `mod` 12)
+
+monthDiff :: Date -> Date -> Int
+monthDiff (Date m1 y1) (Date m2 y2) =
+ if y1 == y2 then
+ 1 + abs (m1 - m2)
+ else
+ let (minM, minY, maxM, maxY) =
+ if y1 < y2 then
+ (m1, y1, m2, y2)
+ else
+ (m2, y2, m1, y1)
+ in 12 * (maxY - minY - 1) + (13 - minM) + maxM
+
+instance FromJSON Date