]> git.immae.eu Git - github/fretlink/edi-parser.git/blame - core/src/Text/Edifact/Common/Segments/UNA.hs
Release code as open source
[github/fretlink/edi-parser.git] / core / src / Text / Edifact / Common / Segments / UNA.hs
CommitLineData
a9d77a20
FM
1module Text.Edifact.Common.Segments.UNA
2 ( segmentUNA
3 ) where
4
5import Text.Edifact.Parsing
6import Text.Edifact.Parsing.Commons (updateSyntax)
7import Text.Edifact.Types (Syntax (..), defaultSyntax)
8
9import Control.Monad (void)
10import Text.Parsec (anyChar, char, endOfLine,
11 optionMaybe, string, try)
12import qualified Text.Parsec as P (optional)
13
14segmentUNA :: Parser ()
15segmentUNA =
16 let segmentParser = string "UNA" *> parseSyntax <* P.optional endOfLine
17 nothing = pure ()
18 in optionMaybe (try segmentParser) >>= maybe nothing updateSyntax
19
20parseSyntax :: Parser Syntax
21parseSyntax = do
22 compositeSeparator' <- anyChar
23 elementSeparator' <- anyChar
24 decimalSign' <- anyChar
25 escape' <- anyChar
26 void $ char ' ' -- reserved, not used
27 segmentSeparator' <- anyChar
28 pure defaultSyntax
29 { compositeSeparator = compositeSeparator'
30 , elementSeparator = elementSeparator'
31 , decimalSign = decimalSign'
32 , escape = escape'
33 , segmentSeparator = segmentSeparator'
34 }