{-# LANGUAGE OverloadedStrings, FlexibleInstances, GeneralizedNewtypeDeriving #-} ----------------------------------------------------------------------------- -- | -- Module : Hasmin.Types.Value -- Copyright : (c) 2017 Cristian Adrián Ontivero -- License : BSD3 -- Stability : experimental -- Portability : unknown -- ----------------------------------------------------------------------------- module Hasmin.Types.Value ( Value(..) , Values(..) , TextV(..) , Separator(..) , Url(..) , mkOther , mkValues , valuesToList , optimizeFontFamily , lowercaseText ) where import Control.Monad.Reader (ask, Reader, mapReader) import Data.Monoid ((<>)) import Data.Maybe (isJust, catMaybes, isNothing) import Data.Text (Text) import qualified Data.Text as T import Data.Text.Lazy.Builder (fromText, singleton, Builder) import Data.String (IsString) import Hasmin.Class import Hasmin.Config import Hasmin.Types.BgSize import Hasmin.Types.BasicShape import Hasmin.Types.BorderRadius import Hasmin.Types.Color import Hasmin.Types.Dimension import Hasmin.Types.FilterFunction import Hasmin.Types.Gradient import Hasmin.Types.Numeric import Hasmin.Types.Position import Hasmin.Types.RepeatStyle import Hasmin.Types.Shadow import Hasmin.Types.String import Hasmin.Types.TimingFunction import Hasmin.Types.TransformFunction import Hasmin.Utils -- | A CSS . data Value = Inherit | Initial | Unset | NumberV Number | PercentageV Percentage | LengthV Length | AngleV Angle | TimeV Time | FrequencyV Frequency | ResolutionV Resolution | ColorV Color | GradientV Text Gradient -- the Text is just to handle function prefixes | GenericFunc Text Values | TransformV TransformFunction | TimingFuncV TimingFunction | FilterV FilterFunction | ShadowV Shadow | ShadowText Length Length (Maybe Length) (Maybe Color) -- type | PositionV Position | RepeatStyleV RepeatStyle | BorderRadiusV BorderRadius | BasicShapeV BasicShape | BgSizeV BgSize -- || [ / ]? || || || {1,2} | BgLayer { _bgimage :: Maybe Value , _bgposition :: Maybe Position , _bgsize :: Maybe BgSize , _bgrepeat :: Maybe RepeatStyle , _bgattachment :: Maybe TextV , _bgbox1 :: Maybe TextV , _bgbox2 :: Maybe TextV } -- || [ / ]? || || || || || <'background-color'> | FinalBgLayer (Maybe Value) (Maybe Position) (Maybe BgSize) (Maybe RepeatStyle) (Maybe TextV) (Maybe TextV) (Maybe TextV) (Maybe Color) -- [ none | ] ||