diff --git a/src/Vervis/Widget.hs b/src/Vervis/Widget.hs index 65caf29..e889c88 100644 --- a/src/Vervis/Widget.hs +++ b/src/Vervis/Widget.hs @@ -16,18 +16,40 @@ -- | Various custom widgets. module Vervis.Widget ( breadcrumbsW + , revisionW ) where import Prelude +import Data.Text (Text) +import Data.Time.Calendar (toGregorian) +import Data.Time.Clock (UTCTime (..)) +import Formatting (sformat, (%), int, left) import Yesod.Core (YesodBreadcrumbs, breadcrumbs) import Yesod.Core.Widget +import qualified Data.Text as T (take) + +import Data.Revision.Local +import Development.DarcsRev (darcsTotalPatches, darcsRevision) import Vervis.Settings (widgetFile) import Vervis.Style breadcrumbsW :: YesodBreadcrumbs site => WidgetT site IO () breadcrumbsW = do (current, bcs) <- handlerToWidget breadcrumbs - $(widgetFile "breadcrumbs") + $(widgetFile "widget/breadcrumbs") + +revisionW :: WidgetT site IO () +revisionW = + let fmtTime t = + let (y, m, d) = toGregorian $ utctDay t + padded = left 2 '0' + in sformat (int % "-" % padded % "-" % padded) y m d + cgTimeFmt = fmtTime . cgTime + mrev = $darcsRevision + sharer = "fr33domlover" :: Text + repo = "vervis" :: Text + changes = $darcsTotalPatches :: Int + in $(widgetFile "widget/revision") diff --git a/templates/breadcrumbs.cassius b/templates/widget/breadcrumbs.cassius similarity index 100% rename from templates/breadcrumbs.cassius rename to templates/widget/breadcrumbs.cassius diff --git a/templates/breadcrumbs.hamlet b/templates/widget/breadcrumbs.hamlet similarity index 100% rename from templates/breadcrumbs.hamlet rename to templates/widget/breadcrumbs.hamlet diff --git a/templates/widget/revision.hamlet b/templates/widget/revision.hamlet new file mode 100644 index 0000000..2987849 --- /dev/null +++ b/templates/widget/revision.hamlet @@ -0,0 +1,27 @@ +$# This file is part of Vervis. +$# +$# Written in 2016 by fr33domlover . +$# +$# ♡ Copying is an act of love. Please copy, reuse and share. +$# +$# The author(s) have dedicated all copyright and related and neighboring +$# rights to this software to the public domain worldwide. This software is +$# distributed without any warranty. +$# +$# You should have received a copy of the CC0 Public Domain Dedication along +$# with this software. If not, see +$# . + +#{sharer}/#{repo} + +$maybe rev <- mrev + $case rev + $of RevTag t + #{cgTitle t} #{cgTimeFmt t} + $of RevTagPlus t n p + #{cgTitle t} + #{n} patches (#{T.take 10 $ cgHash p} #{cgTimeFmt p}) + $of RevPatch p + #{T.take 10 $ cgHash p} #{cgTimeFmt p} + (total: #{changes} patches) +$nothing + (unknown revision)