1 {-# LANGUAGE DisambiguateRecordFields #-}
2 {-# LANGUAGE DuplicateRecordFields #-}
3 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
4 module Language.DTC.Document
5 ( module Language.DTC.Document
9 import Data.Default.Class (Default(..))
12 import Data.Maybe (Maybe(..))
13 import Data.Monoid (Monoid(..))
15 import Data.Semigroup (Semigroup(..))
16 import Data.Text (Text)
17 import Data.TreeSeq.Strict (Trees)
18 import Text.Show (Show)
28 instance Default Document where
39 instance Default Head where
49 , editor :: Maybe Entity
55 , includes :: [Include]
57 instance Default About where
69 instance Semigroup About where
71 { titles = titles x <> titles y
72 , authors = authors x <> authors y
73 , editor = editor x <> editor y
74 , date = date x <> date y
75 , version = version x <> version y
76 , keywords = keywords x <> keywords y
77 , links = links x <> links y
78 , series = series x <> series y
79 , includes = includes x <> includes y
83 type Body = Trees BodyKey BodyValue
87 = Section { pos :: XmlPos
88 , attrs :: CommonAttrs
94 -- ** Type 'BodyValue'
97 , attrs :: CommonAttrs
100 | ToF { pos :: XmlPos
101 , attrs :: CommonAttrs
104 | Figure { pos :: XmlPos
105 , attrs :: CommonAttrs
110 | Index { pos :: XmlPos
111 , attrs :: CommonAttrs
121 type Words = [WordOrSpace]
123 -- **** Type 'WordOrSpace'
127 deriving (Eq,Ord,Show)
130 type Aliases = [Words]
133 type Terms = [Aliases]
140 = Para { pos :: XmlPos
141 , attrs :: CommonAttrs
142 , horis :: Horizontals
145 , attrs :: CommonAttrs
146 , items :: [Verticals]
149 , attrs :: CommonAttrs
150 , items :: [Verticals]
153 , attrs :: CommonAttrs
154 , refs :: [Reference]
156 | Artwork { pos :: XmlPos
157 , attrs :: CommonAttrs
163 -- * Type 'CommonAttrs'
176 -- * Type 'Verticals'
177 type Verticals = [Vertical]
184 -- * Type 'Horizontal'
197 | Eref {href :: URL, text :: Horizontals}
198 | Iref {count :: Int, term :: Words, text :: Horizontals}
199 | Ref {to :: Ident, text :: Horizontals}
200 | Rref {to :: Ident, text :: Horizontals}
204 -- * Type 'Horizontals'
205 type Horizontals = [Horizontal]
208 newtype Title = Title { unTitle :: Horizontals }
209 deriving (Eq,Show,Default)
223 instance Default Address where
240 instance Default Include where
245 -- * Type 'Reference'
252 reference :: Ident -> Reference
259 instance Default Reference where
268 instance Default Entity where
273 instance Semigroup Entity where
280 , month :: Maybe Nat1
283 instance Default Date where
286 , month = Just (Nat1 01)
287 , day = Just (Nat1 01)
289 instance Semigroup Date where
298 , body :: Horizontals
300 instance Default Link where
313 instance Default Alias where
324 instance Default Serie where