module HTMLEntities.Builder (char, text) where import HTMLEntities.Prelude import qualified Data.Text as Text import qualified Data.Text.Lazy.Builder as Text (Builder) import qualified Data.Text.Lazy.Builder as Text.Builder -- | -- HTML-encodes the given char into a text builder. char :: Char -> Text.Builder char c = fromMaybe (Text.Builder.singleton c) $ lookup c entitiesTable -- | -- HTML-encodes the given text into a text builder. -- -- >>> Data.Text.Lazy.IO.putStrLn $ Data.Text.Lazy.Builder.toLazyText $ text "" -- <a href=""> -- text :: Text -> Text.Builder text = Text.foldr (\c b -> char c <> b) mempty {-# NOINLINE entitiesTable #-} entitiesTable :: [(Char, Text.Builder)] entitiesTable = [ ('<', "<"), ('>', ">"), ('&', "&"), ('"', """), ('\'', "'") ]