From 3f4e86e5fe277b0f8270a5c4d8b765f668e06752 Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Mon, 16 Mar 2015 14:20:09 +0200 Subject: [PATCH] Hide a record accessor --- Data/Slug.hs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Data/Slug.hs b/Data/Slug.hs index d517cfa..12c301a 100644 --- a/Data/Slug.hs +++ b/Data/Slug.hs @@ -17,11 +17,14 @@ import qualified System.Random.MWC as MWC import GHC.Prim (RealWorld) import Text.Blaze (ToMarkup) -newtype Slug = Slug { unSlug :: Text } +newtype Slug = Slug Text deriving (Show, Read, Eq, Typeable, PersistField, ToMarkup, Ord, Hashable) instance PersistFieldSql Slug where sqlType = sqlType . liftM unSlug +unSlug :: Slug -> Text +unSlug (Slug t) = t + mkSlug :: MonadThrow m => Text -> m Slug mkSlug t | length t < minLen = throwM $ InvalidSlugException t "Too short"