From 4435ce007d34a8f0488a6a7634c91f0e84fe236a Mon Sep 17 00:00:00 2001 From: Adrian Cochrane Date: Mon, 9 Sep 2019 15:49:58 +1200 Subject: [PATCH] Switch @document from conjunctive conditions to disjunctive conditions. --- src/Data/CSS/Preprocessor/Conditions.hs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Data/CSS/Preprocessor/Conditions.hs b/src/Data/CSS/Preprocessor/Conditions.hs index e6a3048..a30bfbb 100644 --- a/src/Data/CSS/Preprocessor/Conditions.hs +++ b/src/Data/CSS/Preprocessor/Conditions.hs @@ -17,7 +17,10 @@ data ConditionalStyles s = ConditionalStyles { hostUrlS = show . hostURL -parseAtBlock self toks = let (block, toks') = scanBlock toks in (parse' self block, toks') +parseAtBlock self (LeftCurlyBracket:toks) = + let (block, toks') = scanBlock toks in (parse' self block, toks') +parseAtBlock self (_:toks) = parseAtBlock self toks +parseAtBlock self [] = (self, []) instance StyleSheet ConditionalStyles where setPriority x self = self {inner = setPriority x $ inner self} @@ -25,19 +28,18 @@ instance StyleSheet ConditionalStyles where addAtRule self "document" (Comma:toks) = addAtRule self "document" toks addAtRule self "document" (Url match:toks) | unpack match == hostUrlS self = - addAtRule self "document" toks + parseAtBlock self toks addAtRule self "document" (Function "url-prefix":String match:RightParen:toks) = - | unpack match `isPrefixOf` hostUrlS self = addAtRule self "document" toks + | unpack match `isPrefixOf` hostUrlS self = parseAtBlock self toks addAtRule self "document" (Function "domain":String match:RightParen:toks) | unpack match == domain || ('.':unpack match) `isSuffixOf` domain = - addAtRule self "document" toks + parseAtBlock self toks where domain | Just auth <- uriAuthority $ hostURL self = uriRegName auth | otherwise = "" addAtRule self "document" (Function "media-document":String match:RightParen:toks) = - | unpack match == mediaDocument self = addAtRule self "document" toks + | unpack match == mediaDocument self = parseAtBlock self toks -- TODO Support regexp() conditions, requires new dependency - addAtRule self "document" (LeftCurlyBracket:toks) = parseAtBlock self toks addAtRule self "document" tokens = (self, skipAtRule tokens) addAtRule self rule tokens = -- 2.30.2