aboutsummaryrefslogtreecommitdiff
path: root/src/View/Interval.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/View/Interval.hs')
-rw-r--r--src/View/Interval.hs39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/View/Interval.hs b/src/View/Interval.hs
new file mode 100644
index 0000000..05cb62c
--- /dev/null
+++ b/src/View/Interval.hs
@@ -0,0 +1,39 @@
+module View.Interval
+ ( renderDurationAndInterval
+ , renderYearInterval
+ , renderDuration
+ ) where
+
+import Data.Maybe (fromMaybe)
+
+import Model.Date
+import Model.Translation.Language
+import qualified Model.Translation.Key as K
+import Model.Translation.Message
+
+renderDurationAndInterval :: Language -> Date -> Date -> Maybe Date -> String
+renderDurationAndInterval language currentDate beginDate mbEndDate =
+ let duration = renderDuration language beginDate (fromMaybe currentDate mbEndDate)
+ interval = renderYearInterval language beginDate mbEndDate
+ in duration ++ ", " ++ interval
+
+renderDuration :: Language -> Date -> Date -> String
+renderDuration language d1 d2 =
+ let (years, months) = yearAndMonthDiff d1 d2
+ renderYears = (show years) ++ " " ++ (getMessage (K.YearText years) language)
+ renderMonths = (show months) ++ " " ++ (getMessage (K.MonthText months) language)
+ spaceAnd = " " ++ (getMessage K.And language) ++ " "
+ in if years > 0 then
+ renderYears ++ (if months > 0 then spaceAnd ++ renderMonths else "")
+ else
+ renderMonths
+
+renderYearInterval :: Language -> Date -> (Maybe Date) -> String
+renderYearInterval language beginDate Nothing =
+ (getMessage K.Since language) ++ " " ++ (show . year $ beginDate)
+renderYearInterval language beginDate (Just endDate) =
+ let beginYear = year beginDate
+ endYear = year endDate
+ in if beginYear == endYear
+ then show beginYear
+ else (show beginYear) ++ " " ++ (getMessage K.To language) ++ " " ++ (show endYear)