Move tag part of slugs into own module, make tag banning use it (#34)

This commit is contained in:
Chris Done 2014-11-20 14:55:54 +01:00
parent 41a9160c19
commit 190fef7adc
4 changed files with 18 additions and 5 deletions

11
Data/Tag.hs Normal file
View File

@ -0,0 +1,11 @@
-- | A wrapper around the 'Slug' interface.
module Data.Tag where
import Control.Monad.Catch
import Data.Slug
import Data.Text
-- | Make a tag.
mkTag :: MonadThrow m => Text -> m Slug
mkTag = mkSlugLen 1 20

View File

@ -1,11 +1,12 @@
module Handler.BannedTags where
import Data.Slug (unSlug, Slug)
import Data.Tag
import Import
import Data.Slug (unSlug, mkSlug, Slug)
checkSlugs :: Monad m => Textarea -> m (Either Text [Slug])
checkSlugs (Textarea t) =
return $ first tshow $ (mapM mkSlug $ filter (not . null) $ lines $ filter (/= '\r') t)
return $ first tshow $ (mapM mkTag $ filter (not . null) $ lines $ filter (/= '\r') t)
fromSlugs :: [Slug] -> Textarea
fromSlugs = Textarea . unlines . map unSlug

View File

@ -5,7 +5,7 @@
module Handler.Package where
import Data.Char
import Data.Slug
import Data.Tag
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
import Data.Time (addUTCTime)
@ -200,7 +200,7 @@ postPackageTagR packageName =
do mtag <- lookupPostParam "slug"
case mtag of
Just tag ->
do slug <- mkSlugLen 1 20 tag
do slug <- mkTag tag
void (runDB (P.insert (Tag packageName slug uid)))
Nothing -> error "Need a slug"
@ -214,7 +214,7 @@ postPackageUntagR packageName =
do mtag <- lookupPostParam "slug"
case mtag of
Just tag ->
do slug <- mkSlugLen 1 20 tag
do slug <- mkTag tag
void (runDB (P.deleteWhere
[TagPackage ==. packageName
,TagTag ==. slug

View File

@ -22,6 +22,7 @@ library
Settings.StaticFiles
Settings.Development
Data.Slug
Data.Tag
Data.BlobStore
Data.Hackage
Data.Hackage.Views