{-# LANGUAGE LambdaCase #-}
module Text.Jira.Markup
( Doc (..)
, Block (..)
, Inline (..)
, InlineStyle (..)
, LinkType (..)
, ListStyle (..)
, URL (..)
, ColorName (..)
, Icon (..)
, Row (..)
, Cell (..)
, Language (..)
, Parameter (..)
, normalizeInlines
, iconText
) where
import Data.Text (Text, append)
newtype Doc = Doc { Doc -> [Block]
fromDoc :: [Block] }
deriving (Doc -> Doc -> Bool
(Doc -> Doc -> Bool) -> (Doc -> Doc -> Bool) -> Eq Doc
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Doc -> Doc -> Bool
$c/= :: Doc -> Doc -> Bool
== :: Doc -> Doc -> Bool
$c== :: Doc -> Doc -> Bool
Eq, Eq Doc
Eq Doc
-> (Doc -> Doc -> Ordering)
-> (Doc -> Doc -> Bool)
-> (Doc -> Doc -> Bool)
-> (Doc -> Doc -> Bool)
-> (Doc -> Doc -> Bool)
-> (Doc -> Doc -> Doc)
-> (Doc -> Doc -> Doc)
-> Ord Doc
Doc -> Doc -> Bool
Doc -> Doc -> Ordering
Doc -> Doc -> Doc
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Doc -> Doc -> Doc
$cmin :: Doc -> Doc -> Doc
max :: Doc -> Doc -> Doc
$cmax :: Doc -> Doc -> Doc
>= :: Doc -> Doc -> Bool
$c>= :: Doc -> Doc -> Bool
> :: Doc -> Doc -> Bool
$c> :: Doc -> Doc -> Bool
<= :: Doc -> Doc -> Bool
$c<= :: Doc -> Doc -> Bool
< :: Doc -> Doc -> Bool
$c< :: Doc -> Doc -> Bool
compare :: Doc -> Doc -> Ordering
$ccompare :: Doc -> Doc -> Ordering
$cp1Ord :: Eq Doc
Ord, Int -> Doc -> ShowS
[Doc] -> ShowS
Doc -> String
(Int -> Doc -> ShowS)
-> (Doc -> String) -> ([Doc] -> ShowS) -> Show Doc
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Doc] -> ShowS
$cshowList :: [Doc] -> ShowS
show :: Doc -> String
$cshow :: Doc -> String
showsPrec :: Int -> Doc -> ShowS
$cshowsPrec :: Int -> Doc -> ShowS
Show)
data Inline
= Anchor Text
| AutoLink URL
| Citation [Inline]
| ColorInline ColorName [Inline]
| Emoji Icon
| Entity Text
| Image [Parameter] URL
| Linebreak
| Link LinkType [Inline] URL
| Monospaced [Inline]
| Space
| SpecialChar Char
| Str Text
| Styled InlineStyle [Inline]
deriving (Inline -> Inline -> Bool
(Inline -> Inline -> Bool)
-> (Inline -> Inline -> Bool) -> Eq Inline
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Inline -> Inline -> Bool
$c/= :: Inline -> Inline -> Bool
== :: Inline -> Inline -> Bool
$c== :: Inline -> Inline -> Bool
Eq, Eq Inline
Eq Inline
-> (Inline -> Inline -> Ordering)
-> (Inline -> Inline -> Bool)
-> (Inline -> Inline -> Bool)
-> (Inline -> Inline -> Bool)
-> (Inline -> Inline -> Bool)
-> (Inline -> Inline -> Inline)
-> (Inline -> Inline -> Inline)
-> Ord Inline
Inline -> Inline -> Bool
Inline -> Inline -> Ordering
Inline -> Inline -> Inline
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Inline -> Inline -> Inline
$cmin :: Inline -> Inline -> Inline
max :: Inline -> Inline -> Inline
$cmax :: Inline -> Inline -> Inline
>= :: Inline -> Inline -> Bool
$c>= :: Inline -> Inline -> Bool
> :: Inline -> Inline -> Bool
$c> :: Inline -> Inline -> Bool
<= :: Inline -> Inline -> Bool
$c<= :: Inline -> Inline -> Bool
< :: Inline -> Inline -> Bool
$c< :: Inline -> Inline -> Bool
compare :: Inline -> Inline -> Ordering
$ccompare :: Inline -> Inline -> Ordering
$cp1Ord :: Eq Inline
Ord, Int -> Inline -> ShowS
[Inline] -> ShowS
Inline -> String
(Int -> Inline -> ShowS)
-> (Inline -> String) -> ([Inline] -> ShowS) -> Show Inline
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Inline] -> ShowS
$cshowList :: [Inline] -> ShowS
show :: Inline -> String
$cshow :: Inline -> String
showsPrec :: Int -> Inline -> ShowS
$cshowsPrec :: Int -> Inline -> ShowS
Show)
data InlineStyle
= Emphasis
| Insert
| Strikeout
| Strong
| Subscript
| Superscript
deriving (InlineStyle -> InlineStyle -> Bool
(InlineStyle -> InlineStyle -> Bool)
-> (InlineStyle -> InlineStyle -> Bool) -> Eq InlineStyle
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: InlineStyle -> InlineStyle -> Bool
$c/= :: InlineStyle -> InlineStyle -> Bool
== :: InlineStyle -> InlineStyle -> Bool
$c== :: InlineStyle -> InlineStyle -> Bool
Eq, Eq InlineStyle
Eq InlineStyle
-> (InlineStyle -> InlineStyle -> Ordering)
-> (InlineStyle -> InlineStyle -> Bool)
-> (InlineStyle -> InlineStyle -> Bool)
-> (InlineStyle -> InlineStyle -> Bool)
-> (InlineStyle -> InlineStyle -> Bool)
-> (InlineStyle -> InlineStyle -> InlineStyle)
-> (InlineStyle -> InlineStyle -> InlineStyle)
-> Ord InlineStyle
InlineStyle -> InlineStyle -> Bool
InlineStyle -> InlineStyle -> Ordering
InlineStyle -> InlineStyle -> InlineStyle
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: InlineStyle -> InlineStyle -> InlineStyle
$cmin :: InlineStyle -> InlineStyle -> InlineStyle
max :: InlineStyle -> InlineStyle -> InlineStyle
$cmax :: InlineStyle -> InlineStyle -> InlineStyle
>= :: InlineStyle -> InlineStyle -> Bool
$c>= :: InlineStyle -> InlineStyle -> Bool
> :: InlineStyle -> InlineStyle -> Bool
$c> :: InlineStyle -> InlineStyle -> Bool
<= :: InlineStyle -> InlineStyle -> Bool
$c<= :: InlineStyle -> InlineStyle -> Bool
< :: InlineStyle -> InlineStyle -> Bool
$c< :: InlineStyle -> InlineStyle -> Bool
compare :: InlineStyle -> InlineStyle -> Ordering
$ccompare :: InlineStyle -> InlineStyle -> Ordering
$cp1Ord :: Eq InlineStyle
Ord, Int -> InlineStyle -> ShowS
[InlineStyle] -> ShowS
InlineStyle -> String
(Int -> InlineStyle -> ShowS)
-> (InlineStyle -> String)
-> ([InlineStyle] -> ShowS)
-> Show InlineStyle
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [InlineStyle] -> ShowS
$cshowList :: [InlineStyle] -> ShowS
show :: InlineStyle -> String
$cshow :: InlineStyle -> String
showsPrec :: Int -> InlineStyle -> ShowS
$cshowsPrec :: Int -> InlineStyle -> ShowS
Show)
data LinkType
= Attachment
| Email
| External
| User
deriving (LinkType -> LinkType -> Bool
(LinkType -> LinkType -> Bool)
-> (LinkType -> LinkType -> Bool) -> Eq LinkType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: LinkType -> LinkType -> Bool
$c/= :: LinkType -> LinkType -> Bool
== :: LinkType -> LinkType -> Bool
$c== :: LinkType -> LinkType -> Bool
Eq, Eq LinkType
Eq LinkType
-> (LinkType -> LinkType -> Ordering)
-> (LinkType -> LinkType -> Bool)
-> (LinkType -> LinkType -> Bool)
-> (LinkType -> LinkType -> Bool)
-> (LinkType -> LinkType -> Bool)
-> (LinkType -> LinkType -> LinkType)
-> (LinkType -> LinkType -> LinkType)
-> Ord LinkType
LinkType -> LinkType -> Bool
LinkType -> LinkType -> Ordering
LinkType -> LinkType -> LinkType
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: LinkType -> LinkType -> LinkType
$cmin :: LinkType -> LinkType -> LinkType
max :: LinkType -> LinkType -> LinkType
$cmax :: LinkType -> LinkType -> LinkType
>= :: LinkType -> LinkType -> Bool
$c>= :: LinkType -> LinkType -> Bool
> :: LinkType -> LinkType -> Bool
$c> :: LinkType -> LinkType -> Bool
<= :: LinkType -> LinkType -> Bool
$c<= :: LinkType -> LinkType -> Bool
< :: LinkType -> LinkType -> Bool
$c< :: LinkType -> LinkType -> Bool
compare :: LinkType -> LinkType -> Ordering
$ccompare :: LinkType -> LinkType -> Ordering
$cp1Ord :: Eq LinkType
Ord, Int -> LinkType -> ShowS
[LinkType] -> ShowS
LinkType -> String
(Int -> LinkType -> ShowS)
-> (LinkType -> String) -> ([LinkType] -> ShowS) -> Show LinkType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [LinkType] -> ShowS
$cshowList :: [LinkType] -> ShowS
show :: LinkType -> String
$cshow :: LinkType -> String
showsPrec :: Int -> LinkType -> ShowS
$cshowsPrec :: Int -> LinkType -> ShowS
Show)
data Block
= Code Language [Parameter] Text
| Color ColorName [Block]
| BlockQuote [Block]
| Int [Inline]
| HorizontalRule
| List ListStyle [[Block]]
| NoFormat [Parameter] Text
| Panel [Parameter] [Block]
| Para [Inline]
| Table [Row]
deriving (Block -> Block -> Bool
(Block -> Block -> Bool) -> (Block -> Block -> Bool) -> Eq Block
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Block -> Block -> Bool
$c/= :: Block -> Block -> Bool
== :: Block -> Block -> Bool
$c== :: Block -> Block -> Bool
Eq, Eq Block
Eq Block
-> (Block -> Block -> Ordering)
-> (Block -> Block -> Bool)
-> (Block -> Block -> Bool)
-> (Block -> Block -> Bool)
-> (Block -> Block -> Bool)
-> (Block -> Block -> Block)
-> (Block -> Block -> Block)
-> Ord Block
Block -> Block -> Bool
Block -> Block -> Ordering
Block -> Block -> Block
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Block -> Block -> Block
$cmin :: Block -> Block -> Block
max :: Block -> Block -> Block
$cmax :: Block -> Block -> Block
>= :: Block -> Block -> Bool
$c>= :: Block -> Block -> Bool
> :: Block -> Block -> Bool
$c> :: Block -> Block -> Bool
<= :: Block -> Block -> Bool
$c<= :: Block -> Block -> Bool
< :: Block -> Block -> Bool
$c< :: Block -> Block -> Bool
compare :: Block -> Block -> Ordering
$ccompare :: Block -> Block -> Ordering
$cp1Ord :: Eq Block
Ord, Int -> Block -> ShowS
[Block] -> ShowS
Block -> String
(Int -> Block -> ShowS)
-> (Block -> String) -> ([Block] -> ShowS) -> Show Block
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Block] -> ShowS
$cshowList :: [Block] -> ShowS
show :: Block -> String
$cshow :: Block -> String
showsPrec :: Int -> Block -> ShowS
$cshowsPrec :: Int -> Block -> ShowS
Show)
data ListStyle
= CircleBullets
| SquareBullets
| Enumeration
deriving (ListStyle -> ListStyle -> Bool
(ListStyle -> ListStyle -> Bool)
-> (ListStyle -> ListStyle -> Bool) -> Eq ListStyle
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListStyle -> ListStyle -> Bool
$c/= :: ListStyle -> ListStyle -> Bool
== :: ListStyle -> ListStyle -> Bool
$c== :: ListStyle -> ListStyle -> Bool
Eq, Eq ListStyle
Eq ListStyle
-> (ListStyle -> ListStyle -> Ordering)
-> (ListStyle -> ListStyle -> Bool)
-> (ListStyle -> ListStyle -> Bool)
-> (ListStyle -> ListStyle -> Bool)
-> (ListStyle -> ListStyle -> Bool)
-> (ListStyle -> ListStyle -> ListStyle)
-> (ListStyle -> ListStyle -> ListStyle)
-> Ord ListStyle
ListStyle -> ListStyle -> Bool
ListStyle -> ListStyle -> Ordering
ListStyle -> ListStyle -> ListStyle
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ListStyle -> ListStyle -> ListStyle
$cmin :: ListStyle -> ListStyle -> ListStyle
max :: ListStyle -> ListStyle -> ListStyle
$cmax :: ListStyle -> ListStyle -> ListStyle
>= :: ListStyle -> ListStyle -> Bool
$c>= :: ListStyle -> ListStyle -> Bool
> :: ListStyle -> ListStyle -> Bool
$c> :: ListStyle -> ListStyle -> Bool
<= :: ListStyle -> ListStyle -> Bool
$c<= :: ListStyle -> ListStyle -> Bool
< :: ListStyle -> ListStyle -> Bool
$c< :: ListStyle -> ListStyle -> Bool
compare :: ListStyle -> ListStyle -> Ordering
$ccompare :: ListStyle -> ListStyle -> Ordering
$cp1Ord :: Eq ListStyle
Ord, Int -> ListStyle -> ShowS
[ListStyle] -> ShowS
ListStyle -> String
(Int -> ListStyle -> ShowS)
-> (ListStyle -> String)
-> ([ListStyle] -> ShowS)
-> Show ListStyle
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListStyle] -> ShowS
$cshowList :: [ListStyle] -> ShowS
show :: ListStyle -> String
$cshow :: ListStyle -> String
showsPrec :: Int -> ListStyle -> ShowS
$cshowsPrec :: Int -> ListStyle -> ShowS
Show)
newtype ColorName = ColorName Text
deriving (ColorName -> ColorName -> Bool
(ColorName -> ColorName -> Bool)
-> (ColorName -> ColorName -> Bool) -> Eq ColorName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ColorName -> ColorName -> Bool
$c/= :: ColorName -> ColorName -> Bool
== :: ColorName -> ColorName -> Bool
$c== :: ColorName -> ColorName -> Bool
Eq, Eq ColorName
Eq ColorName
-> (ColorName -> ColorName -> Ordering)
-> (ColorName -> ColorName -> Bool)
-> (ColorName -> ColorName -> Bool)
-> (ColorName -> ColorName -> Bool)
-> (ColorName -> ColorName -> Bool)
-> (ColorName -> ColorName -> ColorName)
-> (ColorName -> ColorName -> ColorName)
-> Ord ColorName
ColorName -> ColorName -> Bool
ColorName -> ColorName -> Ordering
ColorName -> ColorName -> ColorName
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ColorName -> ColorName -> ColorName
$cmin :: ColorName -> ColorName -> ColorName
max :: ColorName -> ColorName -> ColorName
$cmax :: ColorName -> ColorName -> ColorName
>= :: ColorName -> ColorName -> Bool
$c>= :: ColorName -> ColorName -> Bool
> :: ColorName -> ColorName -> Bool
$c> :: ColorName -> ColorName -> Bool
<= :: ColorName -> ColorName -> Bool
$c<= :: ColorName -> ColorName -> Bool
< :: ColorName -> ColorName -> Bool
$c< :: ColorName -> ColorName -> Bool
compare :: ColorName -> ColorName -> Ordering
$ccompare :: ColorName -> ColorName -> Ordering
$cp1Ord :: Eq ColorName
Ord, Int -> ColorName -> ShowS
[ColorName] -> ShowS
ColorName -> String
(Int -> ColorName -> ShowS)
-> (ColorName -> String)
-> ([ColorName] -> ShowS)
-> Show ColorName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ColorName] -> ShowS
$cshowList :: [ColorName] -> ShowS
show :: ColorName -> String
$cshow :: ColorName -> String
showsPrec :: Int -> ColorName -> ShowS
$cshowsPrec :: Int -> ColorName -> ShowS
Show)
newtype URL = URL { URL -> Text
fromURL :: Text }
deriving (URL -> URL -> Bool
(URL -> URL -> Bool) -> (URL -> URL -> Bool) -> Eq URL
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: URL -> URL -> Bool
$c/= :: URL -> URL -> Bool
== :: URL -> URL -> Bool
$c== :: URL -> URL -> Bool
Eq, Eq URL
Eq URL
-> (URL -> URL -> Ordering)
-> (URL -> URL -> Bool)
-> (URL -> URL -> Bool)
-> (URL -> URL -> Bool)
-> (URL -> URL -> Bool)
-> (URL -> URL -> URL)
-> (URL -> URL -> URL)
-> Ord URL
URL -> URL -> Bool
URL -> URL -> Ordering
URL -> URL -> URL
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: URL -> URL -> URL
$cmin :: URL -> URL -> URL
max :: URL -> URL -> URL
$cmax :: URL -> URL -> URL
>= :: URL -> URL -> Bool
$c>= :: URL -> URL -> Bool
> :: URL -> URL -> Bool
$c> :: URL -> URL -> Bool
<= :: URL -> URL -> Bool
$c<= :: URL -> URL -> Bool
< :: URL -> URL -> Bool
$c< :: URL -> URL -> Bool
compare :: URL -> URL -> Ordering
$ccompare :: URL -> URL -> Ordering
$cp1Ord :: Eq URL
Ord, Int -> URL -> ShowS
[URL] -> ShowS
URL -> String
(Int -> URL -> ShowS)
-> (URL -> String) -> ([URL] -> ShowS) -> Show URL
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [URL] -> ShowS
$cshowList :: [URL] -> ShowS
show :: URL -> String
$cshow :: URL -> String
showsPrec :: Int -> URL -> ShowS
$cshowsPrec :: Int -> URL -> ShowS
Show)
newtype Row = Row { Row -> [Cell]
fromRow :: [Cell] }
deriving (Row -> Row -> Bool
(Row -> Row -> Bool) -> (Row -> Row -> Bool) -> Eq Row
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Row -> Row -> Bool
$c/= :: Row -> Row -> Bool
== :: Row -> Row -> Bool
$c== :: Row -> Row -> Bool
Eq, Eq Row
Eq Row
-> (Row -> Row -> Ordering)
-> (Row -> Row -> Bool)
-> (Row -> Row -> Bool)
-> (Row -> Row -> Bool)
-> (Row -> Row -> Bool)
-> (Row -> Row -> Row)
-> (Row -> Row -> Row)
-> Ord Row
Row -> Row -> Bool
Row -> Row -> Ordering
Row -> Row -> Row
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Row -> Row -> Row
$cmin :: Row -> Row -> Row
max :: Row -> Row -> Row
$cmax :: Row -> Row -> Row
>= :: Row -> Row -> Bool
$c>= :: Row -> Row -> Bool
> :: Row -> Row -> Bool
$c> :: Row -> Row -> Bool
<= :: Row -> Row -> Bool
$c<= :: Row -> Row -> Bool
< :: Row -> Row -> Bool
$c< :: Row -> Row -> Bool
compare :: Row -> Row -> Ordering
$ccompare :: Row -> Row -> Ordering
$cp1Ord :: Eq Row
Ord, Int -> Row -> ShowS
[Row] -> ShowS
Row -> String
(Int -> Row -> ShowS)
-> (Row -> String) -> ([Row] -> ShowS) -> Show Row
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Row] -> ShowS
$cshowList :: [Row] -> ShowS
show :: Row -> String
$cshow :: Row -> String
showsPrec :: Int -> Row -> ShowS
$cshowsPrec :: Int -> Row -> ShowS
Show)
data Cell
= BodyCell [Block]
| [Block]
deriving (Cell -> Cell -> Bool
(Cell -> Cell -> Bool) -> (Cell -> Cell -> Bool) -> Eq Cell
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Cell -> Cell -> Bool
$c/= :: Cell -> Cell -> Bool
== :: Cell -> Cell -> Bool
$c== :: Cell -> Cell -> Bool
Eq, Eq Cell
Eq Cell
-> (Cell -> Cell -> Ordering)
-> (Cell -> Cell -> Bool)
-> (Cell -> Cell -> Bool)
-> (Cell -> Cell -> Bool)
-> (Cell -> Cell -> Bool)
-> (Cell -> Cell -> Cell)
-> (Cell -> Cell -> Cell)
-> Ord Cell
Cell -> Cell -> Bool
Cell -> Cell -> Ordering
Cell -> Cell -> Cell
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Cell -> Cell -> Cell
$cmin :: Cell -> Cell -> Cell
max :: Cell -> Cell -> Cell
$cmax :: Cell -> Cell -> Cell
>= :: Cell -> Cell -> Bool
$c>= :: Cell -> Cell -> Bool
> :: Cell -> Cell -> Bool
$c> :: Cell -> Cell -> Bool
<= :: Cell -> Cell -> Bool
$c<= :: Cell -> Cell -> Bool
< :: Cell -> Cell -> Bool
$c< :: Cell -> Cell -> Bool
compare :: Cell -> Cell -> Ordering
$ccompare :: Cell -> Cell -> Ordering
$cp1Ord :: Eq Cell
Ord, Int -> Cell -> ShowS
[Cell] -> ShowS
Cell -> String
(Int -> Cell -> ShowS)
-> (Cell -> String) -> ([Cell] -> ShowS) -> Show Cell
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Cell] -> ShowS
$cshowList :: [Cell] -> ShowS
show :: Cell -> String
$cshow :: Cell -> String
showsPrec :: Int -> Cell -> ShowS
$cshowsPrec :: Int -> Cell -> ShowS
Show)
newtype Language = Language Text
deriving (Language -> Language -> Bool
(Language -> Language -> Bool)
-> (Language -> Language -> Bool) -> Eq Language
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Language -> Language -> Bool
$c/= :: Language -> Language -> Bool
== :: Language -> Language -> Bool
$c== :: Language -> Language -> Bool
Eq, Eq Language
Eq Language
-> (Language -> Language -> Ordering)
-> (Language -> Language -> Bool)
-> (Language -> Language -> Bool)
-> (Language -> Language -> Bool)
-> (Language -> Language -> Bool)
-> (Language -> Language -> Language)
-> (Language -> Language -> Language)
-> Ord Language
Language -> Language -> Bool
Language -> Language -> Ordering
Language -> Language -> Language
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Language -> Language -> Language
$cmin :: Language -> Language -> Language
max :: Language -> Language -> Language
$cmax :: Language -> Language -> Language
>= :: Language -> Language -> Bool
$c>= :: Language -> Language -> Bool
> :: Language -> Language -> Bool
$c> :: Language -> Language -> Bool
<= :: Language -> Language -> Bool
$c<= :: Language -> Language -> Bool
< :: Language -> Language -> Bool
$c< :: Language -> Language -> Bool
compare :: Language -> Language -> Ordering
$ccompare :: Language -> Language -> Ordering
$cp1Ord :: Eq Language
Ord, Int -> Language -> ShowS
[Language] -> ShowS
Language -> String
(Int -> Language -> ShowS)
-> (Language -> String) -> ([Language] -> ShowS) -> Show Language
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Language] -> ShowS
$cshowList :: [Language] -> ShowS
show :: Language -> String
$cshow :: Language -> String
showsPrec :: Int -> Language -> ShowS
$cshowsPrec :: Int -> Language -> ShowS
Show)
data Parameter = Parameter
{ Parameter -> Text
parameterKey :: Text
, Parameter -> Text
parameterValue :: Text
} deriving (Parameter -> Parameter -> Bool
(Parameter -> Parameter -> Bool)
-> (Parameter -> Parameter -> Bool) -> Eq Parameter
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Parameter -> Parameter -> Bool
$c/= :: Parameter -> Parameter -> Bool
== :: Parameter -> Parameter -> Bool
$c== :: Parameter -> Parameter -> Bool
Eq, Eq Parameter
Eq Parameter
-> (Parameter -> Parameter -> Ordering)
-> (Parameter -> Parameter -> Bool)
-> (Parameter -> Parameter -> Bool)
-> (Parameter -> Parameter -> Bool)
-> (Parameter -> Parameter -> Bool)
-> (Parameter -> Parameter -> Parameter)
-> (Parameter -> Parameter -> Parameter)
-> Ord Parameter
Parameter -> Parameter -> Bool
Parameter -> Parameter -> Ordering
Parameter -> Parameter -> Parameter
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Parameter -> Parameter -> Parameter
$cmin :: Parameter -> Parameter -> Parameter
max :: Parameter -> Parameter -> Parameter
$cmax :: Parameter -> Parameter -> Parameter
>= :: Parameter -> Parameter -> Bool
$c>= :: Parameter -> Parameter -> Bool
> :: Parameter -> Parameter -> Bool
$c> :: Parameter -> Parameter -> Bool
<= :: Parameter -> Parameter -> Bool
$c<= :: Parameter -> Parameter -> Bool
< :: Parameter -> Parameter -> Bool
$c< :: Parameter -> Parameter -> Bool
compare :: Parameter -> Parameter -> Ordering
$ccompare :: Parameter -> Parameter -> Ordering
$cp1Ord :: Eq Parameter
Ord, Int -> Parameter -> ShowS
[Parameter] -> ShowS
Parameter -> String
(Int -> Parameter -> ShowS)
-> (Parameter -> String)
-> ([Parameter] -> ShowS)
-> Show Parameter
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Parameter] -> ShowS
$cshowList :: [Parameter] -> ShowS
show :: Parameter -> String
$cshow :: Parameter -> String
showsPrec :: Int -> Parameter -> ShowS
$cshowsPrec :: Int -> Parameter -> ShowS
Show)
data Icon
= IconSlightlySmiling
| IconFrowning
| IconTongue
| IconSmiling
| IconWinking
| IconThumbsUp
| IconThumbsDown
| IconInfo
| IconCheckmark
| IconX
| IconAttention
| IconPlus
| IconMinus
| IconQuestionmark
| IconOn
| IconOff
| IconStar
| IconStarRed
| IconStarGreen
| IconStarBlue
| IconStarYellow
| IconFlag
| IconFlagOff
deriving (Int -> Icon
Icon -> Int
Icon -> [Icon]
Icon -> Icon
Icon -> Icon -> [Icon]
Icon -> Icon -> Icon -> [Icon]
(Icon -> Icon)
-> (Icon -> Icon)
-> (Int -> Icon)
-> (Icon -> Int)
-> (Icon -> [Icon])
-> (Icon -> Icon -> [Icon])
-> (Icon -> Icon -> [Icon])
-> (Icon -> Icon -> Icon -> [Icon])
-> Enum Icon
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: Icon -> Icon -> Icon -> [Icon]
$cenumFromThenTo :: Icon -> Icon -> Icon -> [Icon]
enumFromTo :: Icon -> Icon -> [Icon]
$cenumFromTo :: Icon -> Icon -> [Icon]
enumFromThen :: Icon -> Icon -> [Icon]
$cenumFromThen :: Icon -> Icon -> [Icon]
enumFrom :: Icon -> [Icon]
$cenumFrom :: Icon -> [Icon]
fromEnum :: Icon -> Int
$cfromEnum :: Icon -> Int
toEnum :: Int -> Icon
$ctoEnum :: Int -> Icon
pred :: Icon -> Icon
$cpred :: Icon -> Icon
succ :: Icon -> Icon
$csucc :: Icon -> Icon
Enum, Icon -> Icon -> Bool
(Icon -> Icon -> Bool) -> (Icon -> Icon -> Bool) -> Eq Icon
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Icon -> Icon -> Bool
$c/= :: Icon -> Icon -> Bool
== :: Icon -> Icon -> Bool
$c== :: Icon -> Icon -> Bool
Eq, Eq Icon
Eq Icon
-> (Icon -> Icon -> Ordering)
-> (Icon -> Icon -> Bool)
-> (Icon -> Icon -> Bool)
-> (Icon -> Icon -> Bool)
-> (Icon -> Icon -> Bool)
-> (Icon -> Icon -> Icon)
-> (Icon -> Icon -> Icon)
-> Ord Icon
Icon -> Icon -> Bool
Icon -> Icon -> Ordering
Icon -> Icon -> Icon
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Icon -> Icon -> Icon
$cmin :: Icon -> Icon -> Icon
max :: Icon -> Icon -> Icon
$cmax :: Icon -> Icon -> Icon
>= :: Icon -> Icon -> Bool
$c>= :: Icon -> Icon -> Bool
> :: Icon -> Icon -> Bool
$c> :: Icon -> Icon -> Bool
<= :: Icon -> Icon -> Bool
$c<= :: Icon -> Icon -> Bool
< :: Icon -> Icon -> Bool
$c< :: Icon -> Icon -> Bool
compare :: Icon -> Icon -> Ordering
$ccompare :: Icon -> Icon -> Ordering
$cp1Ord :: Eq Icon
Ord, Int -> Icon -> ShowS
[Icon] -> ShowS
Icon -> String
(Int -> Icon -> ShowS)
-> (Icon -> String) -> ([Icon] -> ShowS) -> Show Icon
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Icon] -> ShowS
$cshowList :: [Icon] -> ShowS
show :: Icon -> String
$cshow :: Icon -> String
showsPrec :: Int -> Icon -> ShowS
$cshowsPrec :: Int -> Icon -> ShowS
Show)
normalizeInlines :: [Inline] -> [Inline]
normalizeInlines :: [Inline] -> [Inline]
normalizeInlines = \case
[] -> []
[Inline
Space] -> []
[Inline
Linebreak] -> []
Inline
Space : Inline
Space : [Inline]
xs -> Inline
Space Inline -> [Inline] -> [Inline]
forall a. a -> [a] -> [a]
: [Inline] -> [Inline]
normalizeInlines [Inline]
xs
Inline
Space : Inline
Linebreak : [Inline]
xs -> Inline
Linebreak Inline -> [Inline] -> [Inline]
forall a. a -> [a] -> [a]
: [Inline] -> [Inline]
normalizeInlines [Inline]
xs
Inline
Linebreak : Inline
Space : [Inline]
xs -> Inline
Linebreak Inline -> [Inline] -> [Inline]
forall a. a -> [a] -> [a]
: [Inline] -> [Inline]
normalizeInlines [Inline]
xs
Str Text
s1 : Str Text
s2 : [Inline]
xs -> Text -> Inline
Str (Text
s1 Text -> Text -> Text
`append` Text
s2) Inline -> [Inline] -> [Inline]
forall a. a -> [a] -> [a]
: [Inline] -> [Inline]
normalizeInlines [Inline]
xs
Inline
x : [Inline]
xs -> Inline
x Inline -> [Inline] -> [Inline]
forall a. a -> [a] -> [a]
: [Inline] -> [Inline]
normalizeInlines [Inline]
xs
iconText :: Icon -> Text
iconText :: Icon -> Text
iconText = \case
Icon
IconSlightlySmiling -> Text
":)"
Icon
IconFrowning -> Text
":("
Icon
IconTongue -> Text
":P"
Icon
IconSmiling -> Text
":D"
Icon
IconWinking -> Text
";)"
Icon
IconThumbsUp -> Text
"(y)"
Icon
IconThumbsDown -> Text
"(n)"
Icon
IconInfo -> Text
"(i)"
Icon
IconCheckmark -> Text
"(/)"
Icon
IconX -> Text
"(x)"
Icon
IconAttention -> Text
"(!)"
Icon
IconPlus -> Text
"(+)"
Icon
IconMinus -> Text
"(-)"
Icon
IconQuestionmark -> Text
"(?)"
Icon
IconOn -> Text
"(on)"
Icon
IconOff -> Text
"(off)"
Icon
IconStar -> Text
"(*)"
Icon
IconStarRed -> Text
"(*r)"
Icon
IconStarGreen -> Text
"(*g)"
Icon
IconStarBlue -> Text
"(*b)"
Icon
IconStarYellow -> Text
"(*y)"
Icon
IconFlag -> Text
"(flag)"
Icon
IconFlagOff -> Text
"(flagoff)"