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

import           Text.Edifact.Scaffolder.Commons

import           Data.Char                       (toUpper)
import           Text.Parsec                     (count, digit, eof, oneOf,
                                                  string)
import           Text.Parsec.String              (Parser)

listComposites :: Scaffolding [ElementWithDefinition CompositeCode]
listComposites = listElements "composites" compositeCodeParser

compositeCodeParser :: Parser CompositeCode
compositeCodeParser = do
  initial <- toUpper <$> oneOf "ce"
  rest <- count 3 digit
  _ <- string ".txt"
  CompositeCode (initial : rest) <$ eof