aboutsummaryrefslogtreecommitdiffhomepage
path: root/scaffolder/src/Text/Edifact/Scaffolder/Composites/Elements.hs
diff options
context:
space:
mode:
Diffstat (limited to 'scaffolder/src/Text/Edifact/Scaffolder/Composites/Elements.hs')
-rw-r--r--scaffolder/src/Text/Edifact/Scaffolder/Composites/Elements.hs20
1 files changed, 20 insertions, 0 deletions
diff --git a/scaffolder/src/Text/Edifact/Scaffolder/Composites/Elements.hs b/scaffolder/src/Text/Edifact/Scaffolder/Composites/Elements.hs
new file mode 100644
index 0000000..acfcbdb
--- /dev/null
+++ b/scaffolder/src/Text/Edifact/Scaffolder/Composites/Elements.hs
@@ -0,0 +1,20 @@
1module Text.Edifact.Scaffolder.Composites.Elements
2 ( listComposites
3 ) where
4
5import Text.Edifact.Scaffolder.Commons
6
7import Data.Char (toUpper)
8import Text.Parsec (count, digit, eof, oneOf,
9 string)
10import Text.Parsec.String (Parser)
11
12listComposites :: Scaffolding [ElementWithDefinition CompositeCode]
13listComposites = listElements "composites" compositeCodeParser
14
15compositeCodeParser :: Parser CompositeCode
16compositeCodeParser = do
17 initial <- toUpper <$> oneOf "ce"
18 rest <- count 3 digit
19 _ <- string ".txt"
20 CompositeCode (initial : rest) <$ eof