Explorar el Código

make the dates prettier

(wrote this module in the last few hours, only adding it now.)
Lucas Stadler %!s(int64=11) %!d(string=hace) años
padre
commit
44a7c08280
Se han modificado 2 ficheros con 32 adiciones y 2 borrados
  1. 28 0
      elm/PrettyDate.elm
  2. 4 2
      elm/Stream.elm

+ 28 - 0
elm/PrettyDate.elm

@ -0,0 +1,28 @@
1
module PrettyDate (prettyDate) where
2
3
import Date
4
import Date (Date)
5
6
prettyDate : Date -> Date -> String
7
prettyDate reference date =
8
    let referenceSeconds = Date.toTime reference
9
        dateSeconds = Date.toTime date
10
        diffSeconds = referenceSeconds - dateSeconds
11
    in format diffSeconds
12
13
format : Float -> String
14
format diff =
15
    let minute = 60 * 1000
16
        hour = 60 * minute
17
        day = 24 * hour
18
        week = 7 * day
19
        month = 31 * day
20
        year = 365 * day
21
        roundToString = toString << ceiling
22
    in if | diff < minute -> "moments ago"
23
          | diff < hour   -> roundToString (diff / minute) ++ " minutes ago"
24
          | diff < day    -> roundToString (diff / hour)   ++ " hours ago"
25
          | diff < week   -> roundToString (diff / day)    ++ " days ago"
26
          | diff < month  -> roundToString (diff / week)   ++ " weeks ago"
27
          | diff < year   -> roundToString (diff / month)  ++ " months ago"
28
          | otherwise     -> roundToString (diff / year)   ++ " years ago"

+ 4 - 2
elm/Stream.elm

@ -7,6 +7,7 @@ import Html (..)
7 7
import Html.Attributes as Attr
8 8
import List
9 9
import String
10
import PrettyDate (prettyDate)
10 11
11 12
type alias Post = { title:String, content:String, created:Date }
12 13
@ -25,8 +26,9 @@ posts = [{title = "Something else", content = "Well, I can say more than \"Hello
25 26
referenceDate = date "2015-03-01T14:09"
26 27
27 28
viewDate : Date -> Html
28
viewDate d = let isoDate = formatDate "%Y-%m-%dT%H:%M:%SZ" d
29
             in time [Attr.title isoDate, Attr.datetime isoDate] [(text isoDate)]
29
viewDate d = let dateString = prettyDate referenceDate d
30
                 isoDate = formatDate "%Y-%m-%dT%H:%M:%SZ" d
31
             in time [Attr.title isoDate, Attr.datetime isoDate] [(text dateString)]
30 32
31 33
viewPost : Post -> Html
32 34
viewPost post = div [] [