--- factorcss/CSS.hs 2004/12/19 22:10:41 61 +++ factorcss/CSS.hs 2005/02/12 13:31:23 72 @@ -1,3 +1,10 @@ +-- +-- This file is part of FactorCSS +-- Licensed under the MIT License, +-- http://www.opensource.org/licenses/mit-license +-- Copyright 2004 James Bursa +-- + -- Datatypes for CSS module CSS where @@ -62,6 +69,19 @@ deriving Show +is_ruleset :: Statement -> Bool +is_ruleset (Ruleset sels decls) = True +is_ruleset _ = False + +is_media :: Statement -> Bool +is_media (Media media stmts) = True +is_media _ = False + +is_page :: Statement -> Bool +is_page (Page page decls) = True +is_page _ = False + + show_stylesheet :: Stylesheet -> [String] show_stylesheet (Stylesheet c is ss) = show_charset c ++ map show_import (reverse is) ++ @@ -77,12 +97,20 @@ show_statement :: Statement -> String show_statement (Ruleset ss ds) = - (concat . intersperse ", " . map show_selector) ss ++ + show_selectors ss ++ " { " ++ (concat . intersperse "; " . map show_declaration) ds ++ " }" +show_statement (Media media stmts) = + "@media " ++ (concat . intersperse ", ") media ++ + " {\n" ++ + (unlines . map ('\t':) . map show_statement) stmts ++ + "}" show_statement z = "(statement)" +show_selectors :: [Selector] -> String +show_selectors = concat . intersperse ", " . map show_selector + show_selector :: Selector -> String show_selector [] = "" show_selector ((ss, c):zs) = show_simple_selector ss ++ @@ -91,6 +119,7 @@ show_simple_selector :: SimpleSelector -> String show_simple_selector (Just s, ds) = s ++ (concat . map show_detail) ds +show_simple_selector (Nothing, []) = "*" show_simple_selector (Nothing, ds) = (concat . map show_detail) ds show_detail :: Detail -> String