xml-conduit-stylist 1.0.0.0 → 1.0.1.0
raw patch · 2 files changed
+31/−5 lines, 2 filesdep ~stylist
Dependency ranges changed: stylist
Files
- src/Data/HTML2CSS.hs +29/−3
- xml-conduit-stylist.cabal +2/−2
src/Data/HTML2CSS.hs view
@@ -1,8 +1,8 @@ {-# LANGUAGE OverloadedStrings #-} module Data.HTML2CSS(- externalStyles, externalStylesForURL, internalStyles, internalStylesForURL,- cssPriorityAgent, cssPriorityUser, cssPriorityAuthor,- traverseStyles, traversePrepopulatedStyles, traverseStyles', elToStylish+ externalStyles, externalStylesForURL, internalStyles, internalStylesForURL, -- legacy+ html2css, cssPriorityAgent, cssPriorityUser, cssPriorityAuthor, -- parsing+ traverseStyles, traversePrepopulatedStyles, traverseStyles', elToStylish -- application ) where import qualified Data.List as L@@ -15,6 +15,8 @@ import Data.CSS.Syntax.StyleSheet import Data.CSS.Style import Data.CSS.Syntax.Tokens (tokenize)+import Data.CSS.Preprocessor.Conditions+import qualified Data.CSS.Preprocessor.Conditions.Expr as Query import Network.URI @@ -25,6 +27,30 @@ cssPriorityAuthor = setPriority 3 ---- Parsing+html2css :: PropertyParser p => XML.Document -> URI -> ConditionalStyles p+html2css xml url = ConditionalStyles {+ hostURL = url,+ mediaDocument = "document",+ rules = Priority 3 : html2css' (XML.documentRoot xml) (conditionalStyles url "document"),+ propertyParser = temp+}++html2css' :: PropertyParser p => XML.Element -> ConditionalStyles p -> [ConditionalRule p]+html2css' (XML.Element (XML.Name "style" _ _) attrs children) base =+ [Internal (parseMediaQuery attrs) (parseForURL base (hostURL base) $ strContent children)]+html2css' (XML.Element (XML.Name "link" _ _) attrs _) base+ | Just link <- "href" `M.lookup` attrs,+ Just "stylesheet" <- "rel" `M.lookup` attrs,+ Just uri <- parseURIReference $ Txt.unpack link =+ [External (parseMediaQuery attrs) (relativeTo uri $ hostURL base)]+html2css' (XML.Element _ _ children) base = concat [html2css' el base | XML.NodeElement el <- children]++parseMediaQuery :: M.Map XML.Name Txt.Text -> Query.Expr+parseMediaQuery attrs+ | Just text <- "media" `M.lookup` attrs = Query.parse' (tokenize text) []+ | otherwise = []++---- Parsing (legacy) externalStyles :: StyleSheet s => s -> (M.Map XML.Name Txt.Text -> Bool) -> XML.Element -> (URI -> IO Txt.Text) -> IO s externalStyles a b c d = externalStylesForURL a b c nullURI d
xml-conduit-stylist.cabal view
@@ -10,7 +10,7 @@ -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change-version: 1.0.0.0+version: 1.0.1.0 -- A short (one-line) description of the package. synopsis: Bridge between xml-conduit/html-conduit and stylist@@ -61,7 +61,7 @@ -- Other library packages from which modules are imported. build-depends: base >=4.9 && <4.10,- stylist >=1 && <2, css-syntax, unordered-containers,+ stylist >=1.1.1 && <2, css-syntax, unordered-containers, xml-conduit >=1.8 && < 1.9, text, containers, network-uri