aboutsummaryrefslogtreecommitdiffstats
path: root/app/Issue/Tag.hs
diff options
context:
space:
mode:
authorLibravatar Alexander Foremny <aforemny@posteo.de>2023-10-05 10:03:31 +0200
committerLibravatar Alexander Foremny <aforemny@posteo.de>2023-10-05 10:03:31 +0200
commit16da8a1ea6187f4bd5ef176f2aed64403b111c8c (patch)
treef304e9983afa5b9170e29f7bf0df7933e2aa1c4c /app/Issue/Tag.hs
parent1890844c731b4c5c648b1871193947144aefa3dd (diff)
generate internal @id tag from title
Diffstat (limited to 'app/Issue/Tag.hs')
-rw-r--r--app/Issue/Tag.hs17
1 files changed, 14 insertions, 3 deletions
diff --git a/app/Issue/Tag.hs b/app/Issue/Tag.hs
index 2699342..af12331 100644
--- a/app/Issue/Tag.hs
+++ b/app/Issue/Tag.hs
@@ -1,7 +1,8 @@
{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ViewPatterns #-}
-module Issue.Tag (Tag (..), extract) where
+module Issue.Tag (Tag (..), extractTags, internalTags) where
import Data.Maybe (catMaybes)
import Data.Text (Text)
@@ -9,8 +10,8 @@ import Data.Text qualified as T
data Tag = Tag Text Text deriving (Show)
-extract :: Text -> [Tag]
-extract =
+extractTags :: Text -> [Tag]
+extractTags =
catMaybes
. map
( ( \case
@@ -21,3 +22,13 @@ extract =
. T.words
)
. T.lines
+
+internalTags :: Text -> [Tag]
+internalTags title =
+ [ Tag "id" (toSpinalCase title)
+ ]
+
+toSpinalCase :: Text -> Text
+toSpinalCase = T.replace " " "-" . T.filter keep . T.toLower
+ where
+ keep = (`elem` (concat [[' ', '-'], ['a' .. 'z'], ['0' .. '9']]))