aboutsummaryrefslogtreecommitdiffhomepage
path: root/scaffolder/src/Text/Edifact/Scaffolder/Simples/Elements.hs
blob: 328a5d02528d6e9269090636750100d9ce22cb44 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
module Text.Edifact.Scaffolder.Simples.Elements
  ( listSimples
  ) where

import           Text.Edifact.Scaffolder.Commons

import           Text.Parsec                     (digit, eof, oneOf, string,
                                                  (<?>))
import           Text.Parsec.String              (Parser)

listSimples :: Scaffolding [ElementWithDefinition SimpleCode]
listSimples = listElements "simples" simpleCodeParser

simpleCodeParser :: Parser SimpleCode
simpleCodeParser =
  let codeParser =
        sequence [ oneOf ['1'..'9']
                 , digit
                 , digit
                 , digit
                 ]
  in
  SimpleCode <$> codeParser
             <*  string ".txt"
             <*  eof
             <?> "SimpleCode"