packages feed

css-text 0.0.0 → 0.1.0

raw patch · 3 files changed

+32/−15 lines, 3 filesdep +QuickCheckPVP ok

version bump matches the API change (PVP)

Dependencies added: QuickCheck

API changes (from Hackage documentation)

+ Text.CSS.Parse: attrParser :: Parser (Text, Text)
+ Text.CSS.Parse: attrsParser :: Parser [(Text, Text)]
+ Text.CSS.Parse: blockParser :: Parser (Text, [(Text, Text)])
+ Text.CSS.Parse: blocksParser :: Parser [(Text, [(Text, Text)])]
- Text.CSS.Parse: parseAttr :: Parser (Text, Text)
+ Text.CSS.Parse: parseAttr :: Text -> Either String (Text, Text)
- Text.CSS.Parse: parseAttrs :: Parser [(Text, Text)]
+ Text.CSS.Parse: parseAttrs :: Text -> Either String [(Text, Text)]
- Text.CSS.Parse: parseBlock :: Parser (Text, [(Text, Text)])
+ Text.CSS.Parse: parseBlock :: Text -> Either String (Text, [(Text, Text)])
- Text.CSS.Parse: parseBlocks :: Parser [(Text, [(Text, Text)])]
+ Text.CSS.Parse: parseBlocks :: Text -> Either String [(Text, [(Text, Text)])]

Files

Text/CSS/Parse.hs view
@@ -1,6 +1,10 @@ {-# LANGUAGE OverloadedStrings #-} module Text.CSS.Parse-    ( parseAttr+    ( attrParser+    , attrsParser+    , blockParser+    , blocksParser+    , parseAttr     , parseAttrs     , parseBlock     , parseBlocks@@ -9,12 +13,23 @@ import Prelude hiding (takeWhile) import Data.Attoparsec.Text import Data.Text (Text, strip)-import Data.Char (isSpace) import Control.Applicative ((<|>)) +parseAttrs :: Text -> Either String [(Text, Text)]+parseAttrs = parseOnly attrsParser++parseAttr :: Text -> Either String (Text, Text)+parseAttr = parseOnly attrParser++parseBlocks :: Text -> Either String [(Text, [(Text, Text)])]+parseBlocks = parseOnly blocksParser++parseBlock :: Text -> Either String (Text, [(Text, Text)])+parseBlock = parseOnly blockParser+ skipWS :: Parser () skipWS = (string "/*" >> endComment >> skipWS)-     <|> (satisfy isSpace >> skipSpace >> skipWS)+     <|> (space >> skipSpace >> skipWS)      <|> return ()   where     endComment = do@@ -24,34 +39,34 @@             (char '/' >> return ()) <|> endComment             ) <|> fail "Missing end comment" -parseAttr :: Parser (Text, Text)-parseAttr = do+attrParser :: Parser (Text, Text)+attrParser = do     skipWS     key <- takeWhile1 (not . flip elem ":{}")     _ <- char ':' <|> fail "Missing colon in attribute"     value <- (takeWhile (not . flip elem ";}"))     return (strip key, strip value) -parseAttrs :: Parser [(Text, Text)]-parseAttrs =+attrsParser :: Parser [(Text, Text)]+attrsParser =     go id   where     go front = (do-        a <- parseAttr+        a <- attrParser         (char ';' >> return ()) <|> return ()         skipWS         go $ front . (:) a         ) <|> return (front []) -parseBlock :: Parser (Text, [(Text, Text)])-parseBlock = do+blockParser :: Parser (Text, [(Text, Text)])+blockParser = do     skipWS     sel <- takeWhile (/= '{')     _ <- char '{'-    attrs <- parseAttrs+    attrs <- attrsParser     skipWS     _ <- char '}'     return (strip sel, attrs) -parseBlocks :: Parser [(Text, [(Text, Text)])]-parseBlocks = many parseBlock+blocksParser :: Parser [(Text, [(Text, Text)])]+blocksParser = many blockParser
Text/CSS/Render.hs view
@@ -10,6 +10,7 @@ import Data.Text.Lazy.Builder (Builder, fromText, singleton) import Data.Monoid (mappend, mempty, mconcat) +(<>) :: Builder -> Builder -> Builder (<>) = mappend  renderAttr :: (Text, Text) -> Builder
css-text.cabal view
@@ -1,5 +1,5 @@ name:            css-text-version:         0.0.0+version:         0.1.0 license:         BSD3 license-file:    LICENSE author:          Michael Snoyman <michael@snoyman.com>@@ -27,7 +27,8 @@                    , attoparsec-text           >= 0.8.5.1  && < 0.9                    , HUnit                     >= 1.2      && < 1.3                    , hspec                     >= 0.6.1    && < 0.7+                   , QuickCheck  source-repository head   type:     git-  location: git://github.com/snoyberg/css-text.git+  location: git://github.com/yesodweb/css-text.git