aboutsummaryrefslogtreecommitdiffhomepage
path: root/scaffolder/src/Text/Edifact/Scaffolder/Messages/Elements.hs
blob: fb590ad8efc1337a5274479840effc947bb8f6ac (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
module Text.Edifact.Scaffolder.Messages.Elements
  ( listMessages
  ) where

import           Text.Edifact.Scaffolder.Commons

import           Data.Char                       (toUpper)
import           Text.Parsec                     (count, eof, lower, string,
                                                  (<?>))
import           Text.Parsec.String              (Parser)

-- | List elements
listMessages :: Scaffolding [ElementWithDefinition MessageCode]
listMessages = listElements "messages" messageFilenameParser

messageFilenameParser :: Parser MessageCode
messageFilenameParser =
  let mkCode = MessageCode . fmap toUpper
  in mkCode <$> count 6 lower
            <*  string "_s.txt"
            <*  eof
            <?> "MessageCode"