1 module Text.Edifact.Common.Segments.UNA
5 import Text.Edifact.Parsing
6 import Text.Edifact.Parsing.Commons (updateSyntax)
7 import Text.Edifact.Types (Syntax (..), defaultSyntax)
9 import Control.Monad (void)
10 import Text.Parsec (anyChar, char, endOfLine,
11 optionMaybe, string, try)
12 import qualified Text.Parsec as P (optional)
14 segmentUNA :: Parser ()
16 let segmentParser = string "UNA" *> parseSyntax <* P.optional endOfLine
18 in optionMaybe (try segmentParser) >>= maybe nothing updateSyntax
20 parseSyntax :: Parser Syntax
22 compositeSeparator' <- anyChar
23 elementSeparator' <- anyChar
24 decimalSign' <- anyChar
26 void $ char ' ' -- reserved, not used
27 segmentSeparator' <- anyChar
29 { compositeSeparator = compositeSeparator'
30 , elementSeparator = elementSeparator'
31 , decimalSign = decimalSign'
33 , segmentSeparator = segmentSeparator'