module Html.Intl
(
translate
, intl
) where
import Data.Text.Lazy.Builder (Builder)
import Html (Html(..), Translatable)
translate :: Translatable a => (a -> Builder) -> Html a -> Html a
translate :: forall a. Translatable a => (a -> Builder) -> Html a -> Html a
translate a -> Builder
lang Html a
html = case Html a
html of
ParentNode Builder
startTag Builder
endTag [Attribute]
attributes [Html a]
children -> forall lng.
Builder -> Builder -> [Attribute] -> [Html lng] -> Html lng
ParentNode Builder
startTag Builder
endTag [Attribute]
attributes (forall a b. (a -> b) -> [a] -> [b]
map (forall a. Translatable a => (a -> Builder) -> Html a -> Html a
translate a -> Builder
lang) [Html a]
children)
RootNode Builder
startTag [Html a]
children -> forall lng. Builder -> [Html lng] -> Html lng
RootNode Builder
startTag (forall a b. (a -> b) -> [a] -> [b]
map (forall a. Translatable a => (a -> Builder) -> Html a -> Html a
translate a -> Builder
lang) [Html a]
children)
LeafNode Builder
startTag [Attribute]
attributes -> forall lng. Builder -> [Attribute] -> Html lng
LeafNode Builder
startTag [Attribute]
attributes
TextNode Builder
text -> forall lng. Builder -> Html lng
TextNode Builder
text
IntlNode a
intl -> forall lng. Builder -> Html lng
TextNode Builder
text
where text :: Builder
text = a -> Builder
lang a
intl
intl :: Translatable a => a -> Html a
intl :: forall a. Translatable a => a -> Html a
intl = forall a. Translatable a => a -> Html a
IntlNode
{-# INLINE intl #-}