From e24e7db641551643f5ecb1258a3be62af8fd4e0e Mon Sep 17 00:00:00 2001 From: Danielle McLean Date: Sun, 15 Oct 2017 01:12:18 +1100 Subject: [PATCH] Render entryContent as Markdown too :3 --- config/models | 2 +- src/Model/Entry.hs | 23 ++++++++++++++++++----- templates/mf2/h-entry.cassius | 2 ++ 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/config/models b/config/models index 03713bb..c19a960 100644 --- a/config/models +++ b/config/models @@ -28,7 +28,7 @@ Profile Entry kind EntryKind maxlen=255 name Text Maybe maxlen=255 - content Text sqltype=longtext + content Markdown sqltype=longtext published UTCTime updated UTCTime authorId UserId diff --git a/src/Model/Entry.hs b/src/Model/Entry.hs index 4d4ddf0..97d64ff 100644 --- a/src/Model/Entry.hs +++ b/src/Model/Entry.hs @@ -2,14 +2,27 @@ module Model.Entry where import Model ( Entry, entryName, entryContent ) +import Model.Markdown ( Markdown(Markdown), unMarkdown ) import Data.Maybe ( fromMaybe ) import qualified Data.Text as T +import qualified Data.Text.Lazy as TL entryTitle :: Entry -> T.Text -entryTitle = fromMaybe <$> shorten 30 . entryContent <*> entryName +entryTitle = fromMaybe <$> TL.toStrict . shorten 30 . unMarkdown . entryContent <*> entryName -shorten :: Int -> T.Text -> T.Text -shorten n t - | T.length t > n = flip T.append "..." . T.take (n - 1) $ t - | otherwise = t +class Shorten a where + shorten :: Integral n => n -> a -> a + +instance Shorten T.Text where + shorten n t + | T.length t > fromIntegral n = flip T.append "..." . T.take (fromIntegral n - 1) $ t + | otherwise = t + +instance Shorten TL.Text where + shorten n t + | TL.length t > fromIntegral n = flip TL.append "..." . TL.take (fromIntegral n - 1) $ t + | otherwise = t + +instance Shorten Markdown where + shorten n (Markdown t) = Markdown $ shorten n t diff --git a/templates/mf2/h-entry.cassius b/templates/mf2/h-entry.cassius index 92cc390..75c3a97 100644 --- a/templates/mf2/h-entry.cassius +++ b/templates/mf2/h-entry.cassius @@ -1,4 +1,6 @@ article.h-entry + .e-content p:last-child + margin-bottom: 0 > .card-footer display: flex flex-wrap: wrap