]> git.immae.eu Git - github/fretlink/edi-parser.git/blob - scaffolder/src/Text/Edifact/Scaffolder/Segments/Elements.hs
Release code as open source
[github/fretlink/edi-parser.git] / scaffolder / src / Text / Edifact / Scaffolder / Segments / Elements.hs
1 module Text.Edifact.Scaffolder.Segments.Elements
2 ( listSegments
3 ) where
4
5 import Text.Edifact.Scaffolder.Commons
6
7 import Data.Char (isLower, toUpper)
8 import Text.Parsec (eof, lower, satisfy, string,
9 (<?>))
10 import Text.Parsec.String (Parser)
11
12 listSegments :: Scaffolding [ElementWithDefinition SegmentCode]
13 listSegments = listElements "segments" segmentCodeParser
14
15 segmentCodeParser :: Parser SegmentCode
16 segmentCodeParser = do
17 c1 <- lowerExceptU
18 c2 <- lower
19 c3 <- lower
20 let code = SegmentCode (toUpper <$> [c1,c2,c3])
21 code <$ string ".txt"
22 <* eof
23 <?> "SegmentCode"
24
25 lowerExceptU :: Parser Char
26 lowerExceptU = satisfy (\ c -> isLower c && c /= 'u')