{-# 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, toCaseFold) import qualified Data.Text as T import Data.Text.Lazy.Builder (fromText, singleton, Builder) import Data.String (IsString) import Hasmin.Config import Hasmin.Types.Class import Hasmin.Types.Color import Hasmin.Types.Dimension import Hasmin.Types.Gradient import Hasmin.Types.Numeric import Hasmin.Types.String import Hasmin.Types.Position import Hasmin.Types.RepeatStyle import Hasmin.Types.BgSize import Hasmin.Types.TransformFunction import Hasmin.Types.TimingFunction import Hasmin.Types.FilterFunction import Hasmin.Types.Shadow import Hasmin.Utils import Text.PrettyPrint.Mainland (Pretty, ppr, strictText, space, comma, char) data Value = Inherit | Initial | Unset | NumberV Number | PercentageV Percentage | DistanceV Distance | AngleV Angle | DurationV Duration | 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 Distance Distance (Maybe Distance) (Maybe Color) -- type | PositionV Position | RepeatStyleV RepeatStyle | BgSizeV BgSize -- || [ / ]? || || || {1,2} | BgLayer (Maybe Value) (Maybe Position) (Maybe BgSize) (Maybe RepeatStyle) (Maybe TextV) (Maybe TextV) (Maybe TextV) -- || [ / ]? || || || || || <'background-color'> | FinalBgLayer (Maybe Value) (Maybe Position) (Maybe BgSize) (Maybe RepeatStyle) (Maybe TextV) (Maybe TextV) (Maybe TextV) (Maybe Color) -- [ none | ] ||