]> git.immae.eu Git - github/fretlink/edi-parser.git/blob - 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
1 module Text.Edifact.Common.Segments.UNA
2 ( segmentUNA
3 ) where
4
5 import Text.Edifact.Parsing
6 import Text.Edifact.Parsing.Commons (updateSyntax)
7 import Text.Edifact.Types (Syntax (..), defaultSyntax)
8
9 import Control.Monad (void)
10 import Text.Parsec (anyChar, char, endOfLine,
11 optionMaybe, string, try)
12 import qualified Text.Parsec as P (optional)
13
14 segmentUNA :: Parser ()
15 segmentUNA =
16 let segmentParser = string "UNA" *> parseSyntax <* P.optional endOfLine
17 nothing = pure ()
18 in optionMaybe (try segmentParser) >>= maybe nothing updateSyntax
19
20 parseSyntax :: Parser Syntax
21 parseSyntax = 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 }