aboutsummaryrefslogtreecommitdiff
path: root/src/View/Interval.hs
blob: 05cb62cd4b0b508df3b8091f45bd6d1d1bd93324 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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)