aboutsummaryrefslogtreecommitdiff
path: root/src/server/Model/Message/Parts.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/Model/Message/Parts.hs')
-rw-r--r--src/server/Model/Message/Parts.hs23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/server/Model/Message/Parts.hs b/src/server/Model/Message/Parts.hs
index b7855f8..d065cf2 100644
--- a/src/server/Model/Message/Parts.hs
+++ b/src/server/Model/Message/Parts.hs
@@ -11,28 +11,27 @@ import qualified Data.Text as T
import Text.ParserCombinators.Parsec
-replaceParts :: [Text] -> [Part] -> Text
-replaceParts values = T.concat . map (replacePart values)
+import Model.Json.MessagePart
-replacePart :: [Text] -> Part -> Text
+replaceParts :: [Text] -> Text -> Text
+replaceParts values message =
+ T.concat . map (replacePart values) $ getParts message
+
+replacePart :: [Text] -> MessagePart -> Text
replacePart _ (Str str) = str
-replacePart values (Num n) =
+replacePart values (Order n) =
fromMaybe (T.concat ["{", T.pack (show n), "}"]) . listToMaybe . drop (n - 1) $ values
-data Part =
- Num Int
- | Str Text
-
-getParts :: Text -> [Part]
+getParts :: Text -> [MessagePart]
getParts str =
case parse partsParser "" (T.unpack str) of
Right parts -> parts
Left _ -> []
-partsParser :: Parser [Part]
+partsParser :: Parser [MessagePart]
partsParser = many partParser
-partParser :: Parser Part
+partParser :: Parser MessagePart
partParser =
- (do _ <- string "{"; n <- read <$> many1 digit; _ <- string "}"; return (Num n))
+ (do _ <- string "{"; n <- read <$> many1 digit; _ <- string "}"; return (Order n))
<|> (do str <- T.pack <$> many1 (noneOf "{"); return (Str str))