1 {-# LANGUAGE DisambiguateRecordFields #-}
2 {-# LANGUAGE DuplicateRecordFields #-}
3 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
4 {-# LANGUAGE NamedFieldPuns #-}
5 module Language.DTC.Document
6 ( module Language.DTC.Document
10 import Data.Default.Class (Default(..))
13 import Data.Maybe (Maybe(..))
14 import Data.Semigroup (Semigroup(..))
15 import Data.Text (Text)
16 import Text.Show (Show)
26 instance Default Document where
37 instance Default Head where
47 , editor :: Maybe Entity
53 , includes :: [Include]
55 instance Default About where
67 instance Semigroup About where
69 { titles = titles x <> titles y
70 , authors = authors x <> authors y
71 , editor = editor x <> editor y
72 , date = date x <> date y
73 , version = version x <> version y
74 , keywords = keywords x <> keywords y
75 , links = links x <> links y
76 , series = series x <> series y
77 , includes = includes x <> includes y
82 = Section { attrs :: CommonAttrs
88 | ToC { attrs :: CommonAttrs
92 | ToF { attrs :: CommonAttrs
96 | Index { attrs :: CommonAttrs
99 | Verticals [Vertical]
104 = Para { attrs :: CommonAttrs
105 , horis :: Horizontals
108 | OL { attrs :: CommonAttrs
109 , items :: [Verticals]
112 | UL { attrs :: CommonAttrs
113 , items :: [Verticals]
116 | RL { attrs :: CommonAttrs
117 , refs :: [Reference]
120 | Figure { type_ :: Text
121 , attrs :: CommonAttrs
126 | Artwork { attrs :: CommonAttrs
133 -- * Type 'CommonAttrs'
146 -- * Type 'Verticals'
147 type Verticals = [Vertical]
154 -- * Type 'Horizontal'
167 | Eref {href :: URL , text :: Horizontals}
168 | Iref {to :: Ident, text :: Horizontals}
169 | Ref {to :: Ident, text :: Horizontals}
170 | Rref {to :: Ident, text :: Horizontals}
174 -- * Type 'Horizontals'
175 type Horizontals = [Horizontal]
178 newtype Title = Title { unTitle :: Horizontals }
179 deriving (Eq,Show,Default)
193 instance Default Address where
210 instance Default Include where
215 -- * Type 'Reference'
222 reference :: Ident -> Reference
229 instance Default Reference where
238 instance Default Entity where
243 instance Semigroup Entity where
250 , month :: Maybe Nat1
253 instance Default Date where
256 , month = Just (Nat1 01)
257 , day = Just (Nat1 01)
259 instance Semigroup Date where
268 , body :: Horizontals
270 instance Default Link where
283 instance Default Alias where
294 instance Default Serie where