seonbi-0.1.0: src/Text/Seonbi/Html/Preservation.hs
{-# LANGUAGE NamedFieldPuns #-}
module Text.Seonbi.Html.Preservation
( isPreservedEntity
, isPreservedTag
, isPreservedTagStack
) where
import Prelude hiding (any)
import Text.Seonbi.Html.Entity
import Text.Seonbi.Html.Tag
import Text.Seonbi.Html.TagStack
-- | 'True' if the given tag should be preserved from transformation.
isPreservedTag :: HtmlTag -> Bool
isPreservedTag tag' =
case tag' of
Code -> True
Kbd -> True
Pre -> True
TextArea -> True
_ ->
case htmlTagKind tag' of
Normal -> False
EscapableRawText -> False
_ -> True
-- | 'True' if the given tag stack should be preserved from transformation.
isPreservedTagStack :: HtmlTagStack -> Bool
isPreservedTagStack = any isPreservedTag
-- | 'True' if the given HTML entity should be preserved from transformation.
isPreservedEntity :: HtmlEntity -> Bool
isPreservedEntity HtmlComment {} =
True
isPreservedEntity HtmlStartTag { tagStack, tag } =
isPreservedTag tag || isPreservedTagStack tagStack
isPreservedEntity HtmlEndTag { tagStack, tag } =
isPreservedTag tag || isPreservedTagStack tagStack
isPreservedEntity entity =
isPreservedTagStack $ tagStack entity