module Language.Drasil.Printing.AST (
Expr(..), Spec(..), Ops(..), Fence(..), OverSymb(..), Fonts(..), Spacing(..),
LinkType(..), ListType(..), ItemType(..),
Label, Title
) where
import Language.Drasil (Special)
data LinkType = Internal | Cite2 Spec | External
data Ops = IsIn | Integer | Real | Rational | Natural | Boolean | Comma | Prime | Log
| Ln | Sin | Cos | Tan | Sec | Csc | Cot | Arcsin | Arccos | Arctan | Not
| Dim | Exp | Neg | Cross | Dot | Scale | Eq | NEq | Lt | Gt | LEq | GEq | Impl | Iff
| Subt | And | Or | Add | Mul | Summ | Inte | Prod | Point | Perc | LArrow | RArrow | ForAll
| VAdd | VSub | Partial | SAdd | SRemove | SUnion | SContains deriving Ops -> Ops -> Bool
(Ops -> Ops -> Bool) -> (Ops -> Ops -> Bool) -> Eq Ops
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Ops -> Ops -> Bool
== :: Ops -> Ops -> Bool
$c/= :: Ops -> Ops -> Bool
/= :: Ops -> Ops -> Bool
Eq
data Fence = Paren | Curly | Norm | Abs
data OverSymb = Hat
data Fonts = Bold | Emph
data Spacing = Thin
type Label = Spec
data Expr = Dbl Double
| Int Integer
| Str String
| Case [(Expr, Expr)]
| Mtx [[Expr]]
| Set [Expr]
| Row [Expr]
| Ident String
| Label String
| Spec Special
| Sub Expr
| Sup Expr
| MO Ops
| Over OverSymb Expr
| Fenced Fence Fence Expr
| Font Fonts Expr
| Div Expr Expr
| Sqrt Expr
| Spc Spacing
infixr 5 :+:
data Spec = E Expr
| S String
| Tooltip Spec Spec
| Spec :+: Spec
| Sp Special
| Ref LinkType String Spec
| EmptyS
| Quote Spec
type Title = Spec
data ListType = Ordered [(ItemType, Maybe Label)]
| Unordered [(ItemType, Maybe Label)]
| Simple [(Title, ItemType, Maybe Label)]
| Desc [(Title, ItemType, Maybe Label)]
| Definitions [(Title, ItemType, Maybe Label)]
data ItemType = Flat Spec
| Nested Spec ListType