shakespeare-css 0.10.0 → 0.10.1
raw patch · 3 files changed
+17/−7 lines, 3 files
Files
- Text/Css.hs +9/−2
- Text/Lucius.hs +7/−4
- shakespeare-css.cabal +1/−1
Text/Css.hs view
@@ -26,7 +26,7 @@ { _cssSelectors :: Builder , _cssAttributes :: [(Builder, Builder)] }-data CssTop = Media String [Css'] | Css Css'+data CssTop = Media String [Css'] | Css Css' | Charset String type Css = [CssTop] @@ -55,6 +55,7 @@ return $ cr `AppE` parseBlocks'' `AppE` (LitE $ StringL fp) `AppE` ListE c where go :: TopLevel -> [Content] -- FIXME use blockToCss+ go (TopCharset cs) = [ContentRaw "@charset ", ContentRaw cs, ContentRaw ";"] go (MediaBlock _ blocks) = concatMap (go . TopBlock) blocks go (TopBlock (Block x y z)) = intercalate [ContentRaw ","] x ++@@ -79,6 +80,7 @@ return $ foldr ($) [] $ map goTop a where goTop :: TopLevel -> Css -> Css+ goTop (TopCharset cs) x = Charset cs : x goTop (TopBlock b) x = map Css (go b []) ++ x goTop (MediaBlock s b) x = Media s (foldr go [] b) : x go :: Block -> [Css'] -> [Css']@@ -127,7 +129,7 @@ data Block = Block Selector Pairs [Block] -data TopLevel = TopBlock Block | MediaBlock String [Block]+data TopLevel = TopBlock Block | MediaBlock String [Block] | TopCharset String type Pairs = [Pair] @@ -138,6 +140,7 @@ compressTopLevel :: TopLevel -> TopLevel compressTopLevel (TopBlock b) = TopBlock $ compressBlock b compressTopLevel (MediaBlock s b) = MediaBlock s $ map compressBlock b+compressTopLevel x@TopCharset{} = x compressBlock :: Block -> Block compressBlock (Block x y blocks) =@@ -187,6 +190,7 @@ where go r (TopBlock b) = [|(++) $ map Css ($(blockToCss r b) [])|] go r (MediaBlock s b) = [|(:) $ Media $(lift s) $(blocksToCassius r b)|]+ go r (TopCharset cs) = [|(:) $ Charset $(lift cs)|] blocksToCassius :: Name -> [Block] -> Q Exp blocksToCassius r a = do@@ -202,6 +206,9 @@ fromText (pack s) `mappend` singleton '{' `mappend` foldr mappend (singleton '}') (map renderCss' x)+ go (Charset cs) = fromText (pack "@charset ") `mappend`+ fromText (pack cs) `mappend`+ singleton ';' renderCss' :: Css' -> Builder renderCss' (Css' _x []) = mempty
Text/Lucius.hs view
@@ -17,9 +17,7 @@ import Text.Shakespeare.Base import Language.Haskell.TH.Quote (QuasiQuoter (..)) import Language.Haskell.TH.Syntax-import qualified Data.Text as TS import qualified Data.Text.Lazy as TL-import qualified Text.Cassius as C import Text.ParserCombinators.Parsec hiding (Line) import Text.Css import Data.Char (isSpace)@@ -140,10 +138,15 @@ where go front = do whiteSpace- ((media <|> fmap TopBlock parseBlock) >>= \x -> go (front . (:) x))+ ((charset <|> media <|> fmap TopBlock parseBlock) >>= \x -> go (front . (:) x)) <|> (return $ map compressTopLevel $ front [])+ charset = do+ _ <- try $ string "@charset "+ cs <- many1 $ noneOf ";"+ _ <- char ';'+ return $ TopCharset cs media = do- try $ string "@media "+ _ <- try $ string "@media " name <- many1 $ noneOf "{" _ <- char '{' b <- parseBlocks id
shakespeare-css.cabal view
@@ -1,5 +1,5 @@ name: shakespeare-css-version: 0.10.0+version: 0.10.1 license: BSD3 license-file: LICENSE author: Michael Snoyman <michael@snoyman.com>