diff options
author | Joris Guyonvarch | 2015-08-11 21:32:10 +0200 |
---|---|---|
committer | Joris Guyonvarch | 2015-08-11 21:32:10 +0200 |
commit | 892a7dd19a92fc18767984e624b8a5026dce61e4 (patch) | |
tree | 7d59d58d96958e91a4e9114be0effb9ec7a082a8 /src/server/Model/Message/Parts.hs | |
parent | a3bab4f2a0cc8a6a95753dc91d8e862f40c80dcc (diff) | |
download | budget-892a7dd19a92fc18767984e624b8a5026dce61e4.tar.gz budget-892a7dd19a92fc18767984e624b8a5026dce61e4.tar.bz2 budget-892a7dd19a92fc18767984e624b8a5026dce61e4.zip |
Showing server sides generated messages from the client
Diffstat (limited to 'src/server/Model/Message/Parts.hs')
-rw-r--r-- | src/server/Model/Message/Parts.hs | 23 |
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)) |