0 | module Language.XML.Prolog
2 | import Data.String.Extra
3 | import Data.String.Parser
5 | import public Language.XML.Misc
6 | import public Language.XML.Prolog.DocType
7 | import public Language.XML.Prolog.XMLDecl
10 | record XMLProlog where
11 | constructor MkXMLProlog
12 | xmlDecl : Maybe XMLDecl
13 | xmlDeclMisc : List Misc
14 | docType : Maybe DocType
15 | docTypeMisc : List Misc
17 | %name XMLProlog
prolog
20 | Show XMLProlog where
21 | show prolog = join "\n" $
22 | maybe [] ((:: Nil) . show) prolog.xmlDecl ++
23 | map show prolog.xmlDeclMisc ++
24 | maybe [] ((:: Nil) . show) prolog.docType ++
25 | map show prolog.docTypeMisc
28 | xmlProlog : Parser XMLProlog
30 | xmlDecl <- optional xmlDecl
31 | xmlDeclMisc <- many (spaces *> misc)
32 | docType <- optional (spaces *> docType)
33 | docTypeMisc <- many (spaces *> misc)
34 | pure $
MkXMLProlog xmlDecl xmlDeclMisc docType docTypeMisc