From a9d77a20008efe82862cc1adbfa7a6d4f09f8ff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Menou?= Date: Thu, 8 Dec 2016 10:19:15 +0200 Subject: Release code as open source --- .../Text/Edifact/Scaffolder/Segments/Elements.hs | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 scaffolder/src/Text/Edifact/Scaffolder/Segments/Elements.hs (limited to 'scaffolder/src/Text/Edifact/Scaffolder/Segments/Elements.hs') diff --git a/scaffolder/src/Text/Edifact/Scaffolder/Segments/Elements.hs b/scaffolder/src/Text/Edifact/Scaffolder/Segments/Elements.hs new file mode 100644 index 0000000..4e8b39c --- /dev/null +++ b/scaffolder/src/Text/Edifact/Scaffolder/Segments/Elements.hs @@ -0,0 +1,26 @@ +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') -- cgit v1.2.3