{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE IncoherentInstances #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE StrictData #-}
{-# OPTIONS_GHC -Wall #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Web.Rep.Html
( class__,
toText,
libCss,
libJs,
HtmlT,
Html,
)
where
import Data.Bool
import Data.List (intersperse)
import Data.Text (Text, pack)
import qualified Data.Text.Lazy as Lazy
import Lucid
class__ :: Text -> Attribute
class__ :: Text -> Attribute
class__ Text
t = Text -> Attribute
class_ (Text
" " Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
t Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
" ")
toText :: Html a -> Text
toText :: Html a -> Text
toText = Text -> Text
Lazy.toStrict (Text -> Text) -> (Html a -> Text) -> Html a -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Html a -> Text
forall a. Html a -> Text
renderText
libCss :: Text -> Html ()
libCss :: Text -> Html ()
libCss Text
url =
[Attribute] -> Html ()
forall (m :: * -> *). Applicative m => [Attribute] -> HtmlT m ()
link_
[ Text -> Attribute
rel_ Text
"stylesheet",
Text -> Attribute
href_ Text
url
]
libJs :: Text -> Html ()
libJs :: Text -> Html ()
libJs Text
url = Html () -> [Attribute] -> Html ()
forall a. With a => a -> [Attribute] -> a
with (Text -> Html ()
forall arg result. TermRaw arg result => arg -> result
script_ Text
forall a. Monoid a => a
mempty) [Text -> Attribute
src_ Text
url]
instance ToHtml Double where
toHtml :: Double -> HtmlT m ()
toHtml = Text -> HtmlT m ()
forall a (m :: * -> *). (ToHtml a, Monad m) => a -> HtmlT m ()
toHtml (Text -> HtmlT m ()) -> (Double -> Text) -> Double -> HtmlT m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String -> Text
pack (String -> Text) -> (Double -> String) -> Double -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Double -> String
forall a. Show a => a -> String
show)
toHtmlRaw :: Double -> HtmlT m ()
toHtmlRaw = Text -> HtmlT m ()
forall a (m :: * -> *). (ToHtml a, Monad m) => a -> HtmlT m ()
toHtmlRaw (Text -> HtmlT m ()) -> (Double -> Text) -> Double -> HtmlT m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String -> Text
pack (String -> Text) -> (Double -> String) -> Double -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Double -> String
forall a. Show a => a -> String
show)
instance ToHtml Bool where
toHtml :: Bool -> HtmlT m ()
toHtml = Text -> HtmlT m ()
forall a (m :: * -> *). (ToHtml a, Monad m) => a -> HtmlT m ()
toHtml (Text -> HtmlT m ()) -> (Bool -> Text) -> Bool -> HtmlT m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Text -> Bool -> Text
forall a. a -> a -> Bool -> a
bool (Text
"false" :: Text) Text
"true"
toHtmlRaw :: Bool -> HtmlT m ()
toHtmlRaw = Text -> HtmlT m ()
forall a (m :: * -> *). (ToHtml a, Monad m) => a -> HtmlT m ()
toHtmlRaw (Text -> HtmlT m ()) -> (Bool -> Text) -> Bool -> HtmlT m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Text -> Bool -> Text
forall a. a -> a -> Bool -> a
bool (Text
"false" :: Text) Text
"true"
instance ToHtml Int where
toHtml :: Int -> HtmlT m ()
toHtml = Text -> HtmlT m ()
forall a (m :: * -> *). (ToHtml a, Monad m) => a -> HtmlT m ()
toHtml (Text -> HtmlT m ()) -> (Int -> Text) -> Int -> HtmlT m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String -> Text
pack (String -> Text) -> (Int -> String) -> Int -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> String
forall a. Show a => a -> String
show)
toHtmlRaw :: Int -> HtmlT m ()
toHtmlRaw = Text -> HtmlT m ()
forall a (m :: * -> *). (ToHtml a, Monad m) => a -> HtmlT m ()
toHtmlRaw (Text -> HtmlT m ()) -> (Int -> Text) -> Int -> HtmlT m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String -> Text
pack (String -> Text) -> (Int -> String) -> Int -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> String
forall a. Show a => a -> String
show)
instance ToHtml () where
toHtml :: () -> HtmlT m ()
toHtml = HtmlT m () -> () -> HtmlT m ()
forall a b. a -> b -> a
const HtmlT m ()
"()"
toHtmlRaw :: () -> HtmlT m ()
toHtmlRaw = HtmlT m () -> () -> HtmlT m ()
forall a b. a -> b -> a
const HtmlT m ()
"()"
instance {-# INCOHERENT #-} (ToHtml a) => ToHtml [a] where
toHtml :: [a] -> HtmlT m ()
toHtml = [HtmlT m ()] -> HtmlT m ()
forall a. Monoid a => [a] -> a
mconcat ([HtmlT m ()] -> HtmlT m ())
-> ([a] -> [HtmlT m ()]) -> [a] -> HtmlT m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. HtmlT m () -> [HtmlT m ()] -> [HtmlT m ()]
forall a. a -> [a] -> [a]
Data.List.intersperse (Text -> HtmlT m ()
forall a (m :: * -> *). (ToHtml a, Monad m) => a -> HtmlT m ()
toHtml (Text
"," :: Text)) ([HtmlT m ()] -> [HtmlT m ()])
-> ([a] -> [HtmlT m ()]) -> [a] -> [HtmlT m ()]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> HtmlT m ()) -> [a] -> [HtmlT m ()]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> HtmlT m ()
forall a (m :: * -> *). (ToHtml a, Monad m) => a -> HtmlT m ()
toHtml
toHtmlRaw :: [a] -> HtmlT m ()
toHtmlRaw = [HtmlT m ()] -> HtmlT m ()
forall a. Monoid a => [a] -> a
mconcat ([HtmlT m ()] -> HtmlT m ())
-> ([a] -> [HtmlT m ()]) -> [a] -> HtmlT m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. HtmlT m () -> [HtmlT m ()] -> [HtmlT m ()]
forall a. a -> [a] -> [a]
Data.List.intersperse (Text -> HtmlT m ()
forall a (m :: * -> *). (ToHtml a, Monad m) => a -> HtmlT m ()
toHtmlRaw (Text
"," :: Text)) ([HtmlT m ()] -> [HtmlT m ()])
-> ([a] -> [HtmlT m ()]) -> [a] -> [HtmlT m ()]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> HtmlT m ()) -> [a] -> [HtmlT m ()]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> HtmlT m ()
forall a (m :: * -> *). (ToHtml a, Monad m) => a -> HtmlT m ()
toHtmlRaw