module Text.BBCode.Internal.Builder where
import Numeric.Natural
import Text.BBCode.Internal.Helper
import Data.List (intersperse)
nl :: BBCode
nl :: BBCode
nl = Text -> BBCode
text Text
"\n"
{-# INLINE nl #-}
text :: Text -> BBCode
text :: Text -> BBCode
text = Text -> BBCode
ElText
{-# INLINE text #-}
doc :: [BBCode] -> BBCode
doc :: [BBCode] -> BBCode
doc = [BBCode] -> BBCode
ElDocument
{-# INLINE doc #-}
docNL :: [BBCode] -> BBCode
docNL :: [BBCode] -> BBCode
docNL = [BBCode] -> BBCode
doc forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> [a] -> [a]
intersperse BBCode
nl
hr :: BBCode
hr :: BBCode
hr = El -> BBCode
ElVoid El
HR
{-# INLINE hr #-}
br :: BBCode
br :: BBCode
br = El -> BBCode
ElVoid El
BR
{-# INLINE br #-}
clear :: BBCode
clear :: BBCode
clear = El -> BBCode
ElVoid El
Clear
{-# INLINE clear #-}
listEl :: BBCode
listEl :: BBCode
listEl = El -> BBCode
ElVoid El
ListElement
{-# INLINE listEl #-}
bold :: BBCode -> BBCode
bold :: BBCode -> BBCode
bold = El -> BBCode -> BBCode
ElSimple El
Bold
{-# INLINE bold #-}
italic :: BBCode -> BBCode
italic :: BBCode -> BBCode
italic = El -> BBCode -> BBCode
ElSimple El
Italic
{-# INLINE italic #-}
underline :: BBCode -> BBCode
underline :: BBCode -> BBCode
underline = El -> BBCode -> BBCode
ElSimple El
Underline
{-# INLINE underline #-}
strikethrough :: BBCode -> BBCode
strikethrough :: BBCode -> BBCode
strikethrough = El -> BBCode -> BBCode
ElSimple El
Strikethrough
{-# INLINE strikethrough #-}
indent :: BBCode -> BBCode
indent :: BBCode -> BBCode
indent = El -> BBCode -> BBCode
ElSimple El
Indent
{-# INLINE indent #-}
nfo :: BBCode -> BBCode
nfo :: BBCode -> BBCode
nfo = El -> BBCode -> BBCode
ElSimple El
NFO
{-# INLINE nfo #-}
oneline :: BBCode -> BBCode
oneline :: BBCode -> BBCode
oneline = El -> BBCode -> BBCode
ElSimple El
Oneline
{-# INLINE oneline #-}
code :: Text -> BBCode
code :: Text -> BBCode
code = El -> BBCode -> BBCode
ElSimple El
Code forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> BBCode
ElText
{-# INLINE code #-}
pre :: Text -> BBCode
pre :: Text -> BBCode
pre = El -> BBCode -> BBCode
ElSimple El
Preformatted forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> BBCode
ElText
{-# INLINE pre #-}
box :: BBCode -> BBCode
box :: BBCode -> BBCode
box = El -> BBCode -> BBCode
ElSimple El
Box
{-# INLINE box #-}
image :: Text -> BBCode
image :: Text -> BBCode
image = El -> BBCode -> BBCode
ElSimple El
Image forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> BBCode
ElText
{-# INLINE image #-}
quote :: BBCode -> BBCode
quote :: BBCode -> BBCode
quote = El -> BBCode -> BBCode
ElSimple El
Quote
{-# INLINE quote #-}
spoiler :: BBCode -> BBCode
spoiler :: BBCode -> BBCode
spoiler = El -> BBCode -> BBCode
ElSimple El
Spoiler
{-# INLINE spoiler #-}
list :: [BBCode] -> BBCode
list :: [BBCode] -> BBCode
list =
El -> BBCode -> BBCode
ElSimple El
List
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [BBCode] -> BBCode
ElDocument
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl (\[BBCode]
b BBCode
a -> [BBCode]
b forall a. Semigroup a => a -> a -> a
<> [BBCode
listEl, BBCode
a]) []
{-# INLINEABLE list #-}
boxAlign :: BoxPosition -> BBCode -> BBCode
boxAlign :: BoxPosition -> BBCode -> BBCode
boxAlign BoxPosition
arg = El -> Text -> BBCode -> BBCode
ElArg El
Box (forall a. IsArgument a => a -> Text
toArgument BoxPosition
arg)
{-# INLINE boxAlign #-}
imageAlign :: ImagePosition -> Text -> BBCode
imageAlign :: ImagePosition -> Text -> BBCode
imageAlign ImagePosition
arg = El -> Text -> BBCode -> BBCode
ElArg El
Image (forall a. IsArgument a => a -> Text
toArgument ImagePosition
arg) forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> BBCode
ElText
{-# INLINE imageAlign #-}
quoteNamed :: Text -> BBCode -> BBCode
quoteNamed :: Text -> BBCode -> BBCode
quoteNamed = El -> Text -> BBCode -> BBCode
ElArg El
Quote
{-# INLINE quoteNamed #-}
spoilerNamed :: Text -> BBCode -> BBCode
spoilerNamed :: Text -> BBCode -> BBCode
spoilerNamed = El -> Text -> BBCode -> BBCode
ElArg El
Spoiler
{-# INLINE spoilerNamed #-}
listFlavor :: Foldable t => ListFlavor -> t BBCode -> BBCode
listFlavor :: forall (t :: * -> *).
Foldable t =>
ListFlavor -> t BBCode -> BBCode
listFlavor ListFlavor
flavor =
El -> Text -> BBCode -> BBCode
ElArg El
List (forall a. IsArgument a => a -> Text
toArgument ListFlavor
flavor)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [BBCode] -> BBCode
ElDocument
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl (\[BBCode]
b BBCode
a -> [BBCode]
b forall a. Semigroup a => a -> a -> a
<> [BBCode
listEl, BBCode
a]) []
{-# INLINEABLE listFlavor #-}
color :: Text -> BBCode -> BBCode
color :: Text -> BBCode -> BBCode
color = El -> Text -> BBCode -> BBCode
ElArg El
Color
{-# INLINE color #-}
url :: Text -> BBCode -> BBCode
url :: Text -> BBCode -> BBCode
url = El -> Text -> BBCode -> BBCode
ElArg El
URL
{-# INLINE url #-}
size :: Natural -> BBCode -> BBCode
size :: Natural -> BBCode -> BBCode
size Natural
arg = El -> Text -> BBCode -> BBCode
ElArg El
Size (forall a b. (Show a, IsString b) => a -> b
show' Natural
arg)
{-# INLINE size #-}
align :: AlignPosition -> BBCode -> BBCode
align :: AlignPosition -> BBCode -> BBCode
align AlignPosition
arg = El -> Text -> BBCode -> BBCode
ElArg El
Align (forall a. IsArgument a => a -> Text
toArgument AlignPosition
arg)
{-# INLINE align #-}
font :: Text -> BBCode -> BBCode
font :: Text -> BBCode -> BBCode
font = El -> Text -> BBCode -> BBCode
ElArg El
Font
{-# INLINE font #-}