1 {-# LANGUAGE OverloadedLists #-}
2 {-# LANGUAGE OverloadedStrings #-}
3 module Text.Blaze.DTC where
6 import Data.Text (Text)
8 import Text.Blaze.Internal
10 import Text.Blaze.Utils
11 import Text.Blaze.XML (XML)
16 xmlModel :: Text -> DTC
18 Leaf "xml-model" "<?xml-model" "?>\n" ()
19 ! attribute "type" " type=\"" "application/relax-ng-compact-syntax"
20 ! attribute "href" " href=\"" (attrify rnc)
22 xmlStylesheet :: Text -> DTC
24 Leaf "xml-stylesheet" "<?xml-stylesheet" "?>\n" ()
25 ! attribute "type" " type=\"" "text/xsl"
26 ! attribute "href" " href=\"" (attrify xsl)
28 html5Stylesheet :: Text -> DTC
30 Leaf "html5-stylesheet" "<?html5-stylesheet" "?>\n" ()
31 ! attribute "type" " type=\"" "text/xsl"
32 ! attribute "href" " href=\"" (attrify xsl)
34 atomStylesheet :: Text -> DTC
36 Leaf "atom-stylesheet" "<?atom-stylesheet" "?>\n" ()
37 ! attribute "type" " type=\"" "text/xsl"
38 ! attribute "href" " href=\"" (attrify xsl)
41 about = Parent "about" "<about" "</about>"
43 alias = Leaf "alias" "<alias" "/>" ()
45 artwork = Parent "artwork" "<artwork" "</artwork>"
47 author = Parent "author" "<author" "</author>"
49 b = Parent "b" "<b" "</b>"
51 br = Leaf "br" "<br" " />" ()
53 call = Parent "call" "<call" "</call>"
55 code = Parent "code" "<code" "</code>"
56 comment :: Text -> DTC
57 comment t = Comment (Text t) ()
59 date = Leaf "date" "<date" "/>" ()
61 define = Parent "define" "<define" "</define>"
63 del = Parent "del" "<del" "</del>"
64 document :: DTC -> DTC
65 document = Parent "document" "<document" "</document>"
67 editor = Parent "editor" "<editor" "</editor>"
69 email = Parent "email" "<email" "</email>"
71 entity = Leaf "entity" "<entity" "/>" ()
73 eref (Empty a) = Leaf "eref" "<eref" "/>" a
74 eref x = Parent "eref" "<eref" "</eref>" x
76 figure = Parent "figure" "<figure" "</figure>"
78 i = Parent "i" "<i" "</i>"
79 include :: Bool -> DTC
81 Leaf "include" "<include" "/>" ()
82 !? (not inc, attribute "include" " include=\"" "no")
84 index = Parent "index" "<index" "</index>"
86 iref (Empty a) = Leaf "iref" "<iref" "/>" a
87 iref x = Parent "iref" "<iref" "</iref>" x
89 li = Parent "li" "<li" "</li>"
91 link = Parent "link" "<link" "</link>"
93 macro = Parent "macro" "<macro" "</macro>"
95 note = Parent "note" "<note" "</note>"
97 ol = Parent "ol" "<ol" "</ol>"
98 organization :: DTC -> DTC
99 organization = Parent "organization" "<organization" "</organization>"
101 p = Parent "p" "<p" "</p>"
103 para = Parent "para" "<para" "</para>"
105 q = Parent "q" "<q" "</q>"
107 quote = Parent "quote" "<quote" "</quote>"
109 ref (Empty a) = Leaf "ref" "<ref" "/>" a
110 ref x = Parent "ref" "<ref" "</ref>" x
111 reference :: DTC -> DTC
112 reference = Parent "reference" "<reference" "</reference>"
113 references :: DTC -> DTC
114 references = Parent "references" "<references" "</references>"
116 rref (Empty a) = Leaf "rref" "<rref" "/>" a
117 rref x = Parent "rref" "<rref" "</rref>" x
119 sc = Parent "sc" "<sc" "</sc>"
120 section :: DTC -> DTC
121 section = Parent "section" "<section" "</section>"
123 sub = Parent "sub" "<sub" "</sub>"
125 sup = Parent "sup" "<sup" "</sup>"
127 tag = Parent "tag" "<tag" "</tag>"
129 title = Parent "title" "<title" "</title>"
131 toc = Leaf "toc" "<toc" "/>" ()
133 tof = Parent "tof" "<tof" "</tof>"
135 u = Parent "u" "<u" "</u>"
137 ul = Parent "ul" "<ul" "</ul>"
138 version :: DTC -> DTC
139 version = Parent "version" "<version" "</version>"
141 isInlinedElement :: Text -> Bool
142 isInlinedElement = \case