0 | module Language.XML.Prolog
 1 |
 2 | import Data.String.Extra
 3 | import Data.String.Parser
 4 |
 5 | import public Language.XML.Misc
 6 | import public Language.XML.Prolog.DocType
 7 | import public Language.XML.Prolog.XMLDecl
 8 |
 9 | public export
10 | record XMLProlog where
11 |     constructor MkXMLProlog
12 |     xmlDecl : Maybe XMLDecl
13 |     xmlDeclMisc : List Misc
14 |     docType : Maybe DocType
15 |     docTypeMisc : List Misc
16 |
17 | %name XMLProlog prolog
18 |
19 | export
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
26 |
27 | export
28 | xmlProlog : Parser XMLProlog
29 | xmlProlog = (do
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
35 |   ) <?> "XML prolog"
36 |