aboutsummaryrefslogtreecommitdiffhomepage
path: root/scaffolder/src/Text/Edifact/Scaffolder/Simples/Specification.hs
diff options
context:
space:
mode:
authorFrédéric Menou <frederic.menou@fretlink.com>2016-12-08 10:19:15 +0200
committerIsmaël Bouya <ismael.bouya@fretlink.com>2022-05-17 18:01:51 +0200
commita9d77a20008efe82862cc1adbfa7a6d4f09f8ff7 (patch)
treeadf3186fdccaeef19151026cdfbd38a530cf9ecb /scaffolder/src/Text/Edifact/Scaffolder/Simples/Specification.hs
downloadedi-parser-master.tar.gz
edi-parser-master.tar.zst
edi-parser-master.zip
Release code as open sourceHEADmaster
Diffstat (limited to 'scaffolder/src/Text/Edifact/Scaffolder/Simples/Specification.hs')
-rw-r--r--scaffolder/src/Text/Edifact/Scaffolder/Simples/Specification.hs28
1 files changed, 28 insertions, 0 deletions
diff --git a/scaffolder/src/Text/Edifact/Scaffolder/Simples/Specification.hs b/scaffolder/src/Text/Edifact/Scaffolder/Simples/Specification.hs
new file mode 100644
index 0000000..0651cbd
--- /dev/null
+++ b/scaffolder/src/Text/Edifact/Scaffolder/Simples/Specification.hs
@@ -0,0 +1,28 @@
1module Text.Edifact.Scaffolder.Simples.Specification
2 ( -- *
3 specificationParser
4 ) where
5
6import Text.Edifact.Scaffolder.Commons
7
8import Text.Parsec as P (anyChar, count, digit,
9 endOfLine, manyTill,
10 oneOf, skipMany, string,
11 try)
12import Text.Parsec.String (Parser)
13
14specificationParser :: Parser (SimpleCode, SimpleName)
15specificationParser = scanUntil [ simpleParser ]
16
17simpleParser :: Parser (SimpleCode, SimpleName)
18simpleParser = do
19 _ <- count 3 (oneOf "+*#|-X ")
20 skipMany (string " ")
21 code <- simpleCodeParser
22 _ <- string " "
23 skipMany (string " ")
24 name <- SimpleName <$> manyTill anyChar (() <$ try endOfLine)
25 pure (code, name)
26
27simpleCodeParser :: Parser SimpleCode
28simpleCodeParser = fromString <$> count 4 digit