blob: 4e8b39c9b190a7810a24e229c46e93eb0708ca3e (
plain) (
tree)
|
|
module Text.Edifact.Scaffolder.Segments.Elements
( listSegments
) where
import Text.Edifact.Scaffolder.Commons
import Data.Char (isLower, toUpper)
import Text.Parsec (eof, lower, satisfy, string,
(<?>))
import Text.Parsec.String (Parser)
listSegments :: Scaffolding [ElementWithDefinition SegmentCode]
listSegments = listElements "segments" segmentCodeParser
segmentCodeParser :: Parser SegmentCode
segmentCodeParser = do
c1 <- lowerExceptU
c2 <- lower
c3 <- lower
let code = SegmentCode (toUpper <$> [c1,c2,c3])
code <$ string ".txt"
<* eof
<?> "SegmentCode"
lowerExceptU :: Parser Char
lowerExceptU = satisfy (\ c -> isLower c && c /= 'u')
|