module HTMLEntities.Builder (char, text) where
import qualified Data.Text as Text
import qualified Data.Text.Lazy.Builder as Text (Builder)
import qualified Data.Text.Lazy.Builder as Text.Builder
import HTMLEntities.Prelude
char :: Char -> Text.Builder
char :: Char -> Builder
char Char
c =
Builder -> Maybe Builder -> Builder
forall a. a -> Maybe a -> a
fromMaybe (Char -> Builder
Text.Builder.singleton Char
c)
(Maybe Builder -> Builder) -> Maybe Builder -> Builder
forall a b. (a -> b) -> a -> b
$ Char -> [(Char, Builder)] -> Maybe Builder
forall a b. Eq a => a -> [(a, b)] -> Maybe b
lookup Char
c [(Char, Builder)]
entitiesTable
text :: Text -> Text.Builder
text :: Text -> Builder
text =
(Char -> Builder -> Builder) -> Builder -> Text -> Builder
forall a. (Char -> a -> a) -> a -> Text -> a
Text.foldr (\Char
c Builder
b -> Char -> Builder
char Char
c Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Builder
b) Builder
forall a. Monoid a => a
mempty
{-# NOINLINE entitiesTable #-}
entitiesTable :: [(Char, Text.Builder)]
entitiesTable :: [(Char, Builder)]
entitiesTable =
[ (Char
'<', Builder
"<"),
(Char
'>', Builder
">"),
(Char
'&', Builder
"&"),
(Char
'"', Builder
"""),
(Char
'\'', Builder
"'")
]