blaze-svg 0.3.0.0 → 0.3.0.1
raw patch · 22 files changed
+4564/−4524 lines, 22 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Text.Blaze.Svg: skewX, skewY :: Show a => a -> AttributeValue
- Text.Blaze.Svg.Internal: appendToPath :: [String] -> Path
- Text.Blaze.Svg.Internal: c :: Show a => a -> a -> a -> a -> a -> a -> Path
- Text.Blaze.Svg.Internal: cr :: Show a => a -> a -> a -> a -> a -> a -> Path
- Text.Blaze.Svg.Internal: h :: Show a => a -> Path
- Text.Blaze.Svg.Internal: hr :: Show a => a -> Path
- Text.Blaze.Svg.Internal: l :: Show a => a -> a -> Path
- Text.Blaze.Svg.Internal: lr :: Show a => a -> a -> Path
- Text.Blaze.Svg.Internal: m :: Show a => a -> a -> Path
- Text.Blaze.Svg.Internal: matrix :: Show a => a -> a -> a -> a -> a -> a -> AttributeValue
- Text.Blaze.Svg.Internal: mkPath :: Path -> AttributeValue
- Text.Blaze.Svg.Internal: mr :: Show a => a -> a -> Path
- Text.Blaze.Svg.Internal: q :: Show a => a -> a -> a -> a -> Path
- Text.Blaze.Svg.Internal: qr :: Show a => a -> a -> a -> a -> Path
- Text.Blaze.Svg.Internal: rotate :: Show a => a -> AttributeValue
- Text.Blaze.Svg.Internal: rotateAround :: Show a => a -> a -> a -> AttributeValue
- Text.Blaze.Svg.Internal: s :: Show a => a -> a -> a -> a -> Path
- Text.Blaze.Svg.Internal: scale :: Show a => a -> a -> AttributeValue
- Text.Blaze.Svg.Internal: skewX, skewY :: Show a => a -> AttributeValue
- Text.Blaze.Svg.Internal: sr :: Show a => a -> a -> a -> a -> Path
- Text.Blaze.Svg.Internal: t :: Show a => a -> a -> Path
- Text.Blaze.Svg.Internal: tr :: Show a => a -> a -> Path
- Text.Blaze.Svg.Internal: translate :: Show a => a -> a -> AttributeValue
- Text.Blaze.Svg.Internal: type Path = State AttributeValue ()
- Text.Blaze.Svg.Internal: type Svg = Markup
- Text.Blaze.Svg.Internal: v :: Show a => a -> Path
- Text.Blaze.Svg.Internal: vr :: Show a => a -> Path
- Text.Blaze.Svg.Internal: z :: Path
+ Text.Blaze.Svg: skewX :: Show a => a -> AttributeValue
+ Text.Blaze.Svg: skewY :: Show a => a -> AttributeValue
Files
- Text/Blaze/Svg.hs +0/−17
- Text/Blaze/Svg/Internal.hs +0/−248
- Text/Blaze/Svg/Renderer/Pretty.hs +0/−10
- Text/Blaze/Svg/Renderer/String.hs +0/−11
- Text/Blaze/Svg/Renderer/Text.hs +0/−10
- Text/Blaze/Svg/Renderer/Utf8.hs +0/−8
- Text/Blaze/Svg11.hs +0/−864
- Text/Blaze/Svg11/Attributes.hs +0/−2942
- Util/GenerateSvgCombinators.hs +0/−329
- Util/Sanitize.hs +0/−78
- blaze-svg.cabal +20/−7
- examples/Example.hs +26/−0
- src/Text/Blaze/Svg.hs +24/−0
- src/Text/Blaze/Svg/Internal.hs +249/−0
- src/Text/Blaze/Svg/Renderer/Pretty.hs +10/−0
- src/Text/Blaze/Svg/Renderer/String.hs +11/−0
- src/Text/Blaze/Svg/Renderer/Text.hs +10/−0
- src/Text/Blaze/Svg/Renderer/Utf8.hs +8/−0
- src/Text/Blaze/Svg11.hs +859/−0
- src/Text/Blaze/Svg11/Attributes.hs +2942/−0
- src/Util/GenerateSvgCombinators.hs +327/−0
- src/Util/Sanitize.hs +78/−0
− Text/Blaze/Svg.hs
@@ -1,17 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-module Text.Blaze.Svg- (- Svg- , Path- , mkPath- , m, mr- , z- , l, lr, h, hr, v, vr- , c, cr, s, sr- , q, qr, t, tr- , translate, rotate, scale- , skewX, skewY- , matrix- ) where--import Text.Blaze.Svg.Internal
− Text/Blaze/Svg/Internal.hs
@@ -1,248 +0,0 @@-module Text.Blaze.Svg.Internal where--import Control.Monad.State-import Data.Monoid (mappend, mempty)--import Text.Blaze---- | Type to represent an SVG document fragment-type Svg = Markup---- | Type to accumulate an SVG path-type Path = State AttributeValue ()---- | Construct SVG path values using path instruction combinators.--- See simple example below of how you can use @mkPath@ to--- specify a path using the path instruction combinators--- that are included as part of the same module------ More information available at: <http://www.w3.org/TR/SVG/paths.html>------ > import Text.Blaze.Svg11 ((!), mkPath, l, m)--- > import qualified Text.Blaze.Svg11 as S--- > import qualified Text.Blaze.Svg11.Attributes as A--- >--- > svgDoc :: S.Svg--- > svgDoc = S.docTypeSvg ! A.version "1.1" ! A.width "150" ! A.height "100" $ do--- > path ! d makeSimplePath--- >--- > makeSimplePath :: S.AttributeValue--- > makeSimplePath = mkPath do--- > l 2 3--- > m 4 5-mkPath :: Path -> AttributeValue-mkPath path = snd $ runState path mempty--appendToPath :: [String] -> Path-appendToPath = modify . flip mappend . toValue . join---- | Moveto-m :: Show a => a -> a -> Path-m x y = appendToPath- [ "M "- , show x, ",", show y- , " "- ]---- | Moveto (relative)-mr :: Show a => a -> a -> Path-mr dx dy = appendToPath- [ "m "- , show dx, ",", show dy- , " "- ]---- | ClosePath-z :: Path-z = modify (`mappend` toValue "Z")---- | Lineto-l :: Show a => a -> a -> Path-l x y = appendToPath- [ "L "- , show x, ",", show y- , " "- ]---- | Lineto (relative)-lr :: Show a => a -> a -> Path-lr dx dy = appendToPath- [ "l "- , show dx, ",", show dy- , " "- ]---- | Horizontal lineto-h :: Show a => a -> Path-h x = appendToPath- [ "H "- , show x- , " "- ]---- | Horizontal lineto (relative)-hr :: Show a => a -> Path-hr dx = appendToPath- [ "h "- , show dx- , " "- ]----- | Vertical lineto-v :: Show a => a -> Path-v y = appendToPath- [ "V "- , show y- , " "- ]---- | Vertical lineto (relative)-vr :: Show a => a -> Path-vr dy = appendToPath- [ "v "- , show dy- , " "- ]---- | Cubic Bezier curve-c :: Show a => a -> a -> a -> a -> a -> a -> Path-c c1x c1y c2x c2y x y = appendToPath- [ "C "- , show c1x, ",", show c1y- , " "- , show c2x, ",", show c2y- , " "- , show x, " ", show y- ]---- | Cubic Bezier curve (relative)-cr :: Show a => a -> a -> a -> a -> a -> a -> Path-cr dc1x dc1y dc2x dc2y dx dy = appendToPath- [ "c "- , show dc1x, ",", show dc1y- , " "- , show dc2x, ",", show dc2y- , " "- , show dx, " ", show dy- ]---- | Smooth Cubic Bezier curve-s :: Show a => a -> a -> a -> a -> Path-s c2x c2y x y = appendToPath- [ "S "- , show c2x, ",", show c2y- , " "- , show x, ",", show y- , " "- ]---- | Smooth Cubic Bezier curve (relative)-sr :: Show a => a -> a -> a -> a -> Path-sr dc2x dc2y dx dy = appendToPath- [ "s "- , show dc2x, ",", show dc2y- , " "- , show dx, ",", show dy- , " "- ]---- | Quadratic Bezier curve-q :: Show a => a -> a -> a -> a -> Path-q cx cy x y = appendToPath- [ "Q "- , show cx, ",", show cy- , " "- , show x, ",", show y- , " "- ]---- | Quadratic Bezier curve (relative)-qr :: Show a => a -> a -> a -> a -> Path-qr dcx dcy dx dy = appendToPath- [ "q "- , show dcx, ",", show dcy- , " "- , show dx, ",", show dy- , " "- ]---- | Smooth Quadratic Bezier curve-t :: Show a => a -> a -> Path-t x y = appendToPath- [ "T "- , " "- , show x, ",", show y- , " "- ]---- | Smooth Quadratic Bezier curve (relative)-tr :: Show a => a -> a -> Path-tr x y = appendToPath- [ "t "- , " "- , show x, ",", show y- , " "- ]---- | Specifies a translation by @x@ and @y@-translate :: Show a => a -> a -> AttributeValue-translate x y = toValue . join $- [ "translate("- , show x, " ", show y- , ")"- ]---- | Specifies a scale operation by @x@ and @y@-scale :: Show a => a -> a -> AttributeValue-scale x y = toValue . join $- [ "scale("- , show x, " ", show y- , ")"- ]---- | Specifies a rotation by @rotate-angle@ degrees-rotate :: Show a => a -> AttributeValue-rotate rotateAngle = toValue . join $- [ "rotate("- , show rotateAngle- , ")"- ]---- | Specifies a rotation by @rotate-angle@ degrees about the given time @rx,ry@-rotateAround :: Show a => a -> a -> a -> AttributeValue-rotateAround rotateAngle rx ry = toValue . join $- [ "rotate("- , show rotateAngle, ","- , show rx, ",", show ry- , ")"- ]--skewX, skewY :: Show a => a -> AttributeValue---- | Skew tansformation along x-axis-skewX skewAngle = toValue . join $- [ "skewX("- , show skewAngle- , ")"- ]---- | Skew tansformation along y-axis-skewY skewAngle = toValue . join $- [ "skewY("- , show skewAngle- , ")"- ]---- | Specifies a transform in the form of a transformation matrix-matrix :: Show a => a -> a -> a -> a -> a -> a -> AttributeValue-matrix a b c_ d e f = toValue . join $- [ "matrix("- , show a, ","- , show b, ","- , show c_, ","- , show d, ","- , show e, ","- , show f- , ")"- ]
− Text/Blaze/Svg/Renderer/Pretty.hs
@@ -1,10 +0,0 @@-{-# OPTIONS_GHC -fno-warn-missing-signatures #-}--- | A renderer that produces pretty SVG, mostly meant for debugging purposes.----module Text.Blaze.Svg.Renderer.Pretty- ( renderSvg- ) where--import Text.Blaze.Renderer.Pretty (renderMarkup)--renderSvg = renderMarkup
− Text/Blaze/Svg/Renderer/String.hs
@@ -1,11 +0,0 @@-{-# OPTIONS_GHC -fno-warn-missing-signatures #-}--- | A renderer that produces a native Haskell 'String', mostly meant for--- debugging purposes.----module Text.Blaze.Svg.Renderer.String- ( renderSvg- ) where--import Text.Blaze.Renderer.String (renderMarkup)--renderSvg = renderMarkup
− Text/Blaze/Svg/Renderer/Text.hs
@@ -1,10 +0,0 @@-{-# OPTIONS_GHC -fno-warn-missing-signatures #-}--- | A renderer that produces a lazy 'L.Text' value, using the Text Builder.----module Text.Blaze.Svg.Renderer.Text- ( renderSvg- ) where--import Text.Blaze.Renderer.Text (renderMarkup)--renderSvg = renderMarkup
− Text/Blaze/Svg/Renderer/Utf8.hs
@@ -1,8 +0,0 @@-{-# OPTIONS_GHC -fno-warn-missing-signatures #-}-module Text.Blaze.Svg.Renderer.Utf8- ( renderSvg- ) where--import Text.Blaze.Renderer.Utf8 (renderMarkup)--renderSvg = renderMarkup
− Text/Blaze/Svg11.hs
@@ -1,864 +0,0 @@--- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:69----{-# LANGUAGE OverloadedStrings #-}--- | This module exports SVG combinators used to create documents.----module Text.Blaze.Svg11- ( module Text.Blaze- , module Text.Blaze.Svg- , docType- , docTypeSvg- , a- , altglyph- , altglyphdef- , altglyphitem- , animate- , animatecolor- , animatemotion- , animatetransform- , circle- , clippath- , colorProfile- , cursor- , defs- , desc- , ellipse- , feblend- , fecolormatrix- , fecomponenttransfer- , fecomposite- , feconvolvematrix- , fediffuselighting- , fedisplacementmap- , fedistantlight- , feflood- , fefunca- , fefuncb- , fefuncg- , fefuncr- , fegaussianblur- , feimage- , femerge- , femergenode- , femorphology- , feoffset- , fepointlight- , fespecularlighting- , fespotlight- , fetile- , feturbulence- , filter_- , font- , fontFace- , fontFaceFormat- , fontFaceName- , fontFaceSrc- , fontFaceUri- , foreignobject- , g- , glyph- , glyphref- , hkern- , image- , line- , lineargradient- , marker- , mask- , metadata- , missingGlyph- , mpath- , path- , pattern- , polygon- , polyline- , radialgradient- , rect- , script- , set- , stop- , style- , svg- , switch- , symbol- , text_- , textpath- , title- , tref- , tspan- , use- , view- , vkern- ) where---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:78----import Prelude ((>>), (.), ($))--import Text.Blaze-import Text.Blaze.Svg-import Text.Blaze.Internal---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:157------ | Combinator for the document type. This should be placed at the top--- of every SVG page.------ > <?xml version="1.0" encoding="UTF-8"?>--- > <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"--- > "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">----docType :: Svg -- ^ The document type SVG.-docType = preEscapedText "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n"-{-# INLINE docType #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:172------ | Combinator for the @\<svg>@ element. This combinator will also--- insert the correct doctype.------ > <?xml version="1.0" encoding="UTF-8"?>--- > <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"--- > "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">--- > <svg><span>foo</span></svg>----docTypeSvg :: Svg -- ^ Inner SVG.- -> Svg -- ^ Resulting SVG.-docTypeSvg inner = docType >> (svg ! attribute "xmlns" " xmlns=\"" "http://www.w3.org/2000/svg" ! attribute "xmlns:xlink" " xmlns:xlink=\"" "http://www.w3.org/1999/xlink" $ inner)-{-# INLINE docTypeSvg #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:188------ | Combinator for the @\<a>@ element.----a :: Svg -- ^ Inner SVG.- -> Svg -- ^ Resulting SVG.-a = Parent "a" "<a" "</a>"-{-# INLINE a #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<altGlyph />@ element.----altglyph :: Svg -- ^ Resulting SVG.-altglyph = Leaf "altGlyph" "<altGlyph" " />"-{-# INLINE altglyph #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<altGlyphDef />@ element.----altglyphdef :: Svg -- ^ Resulting SVG.-altglyphdef = Leaf "altGlyphDef" "<altGlyphDef" " />"-{-# INLINE altglyphdef #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<altGlyphItem />@ element.----altglyphitem :: Svg -- ^ Resulting SVG.-altglyphitem = Leaf "altGlyphItem" "<altGlyphItem" " />"-{-# INLINE altglyphitem #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<animate />@ element.----animate :: Svg -- ^ Resulting SVG.-animate = Leaf "animate" "<animate" " />"-{-# INLINE animate #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<animateColor />@ element.----animatecolor :: Svg -- ^ Resulting SVG.-animatecolor = Leaf "animateColor" "<animateColor" " />"-{-# INLINE animatecolor #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<animateMotion />@ element.----animatemotion :: Svg -- ^ Resulting SVG.-animatemotion = Leaf "animateMotion" "<animateMotion" " />"-{-# INLINE animatemotion #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<animateTransform />@ element.----animatetransform :: Svg -- ^ Resulting SVG.-animatetransform = Leaf "animateTransform" "<animateTransform" " />"-{-# INLINE animatetransform #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<circle />@ element.----circle :: Svg -- ^ Resulting SVG.-circle = Leaf "circle" "<circle" " />"-{-# INLINE circle #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<clipPath />@ element.----clippath :: Svg -- ^ Resulting SVG.-clippath = Leaf "clipPath" "<clipPath" " />"-{-# INLINE clippath #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<color-profile />@ element.----colorProfile :: Svg -- ^ Resulting SVG.-colorProfile = Leaf "color-profile" "<color-profile" " />"-{-# INLINE colorProfile #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<cursor />@ element.----cursor :: Svg -- ^ Resulting SVG.-cursor = Leaf "cursor" "<cursor" " />"-{-# INLINE cursor #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:188------ | Combinator for the @\<defs>@ element.----defs :: Svg -- ^ Inner SVG.- -> Svg -- ^ Resulting SVG.-defs = Parent "defs" "<defs" "</defs>"-{-# INLINE defs #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<desc />@ element.----desc :: Svg -- ^ Resulting SVG.-desc = Leaf "desc" "<desc" " />"-{-# INLINE desc #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<ellipse />@ element.----ellipse :: Svg -- ^ Resulting SVG.-ellipse = Leaf "ellipse" "<ellipse" " />"-{-# INLINE ellipse #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feBlend />@ element.----feblend :: Svg -- ^ Resulting SVG.-feblend = Leaf "feBlend" "<feBlend" " />"-{-# INLINE feblend #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feColorMatrix />@ element.----fecolormatrix :: Svg -- ^ Resulting SVG.-fecolormatrix = Leaf "feColorMatrix" "<feColorMatrix" " />"-{-# INLINE fecolormatrix #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feComponentTransfer />@ element.----fecomponenttransfer :: Svg -- ^ Resulting SVG.-fecomponenttransfer = Leaf "feComponentTransfer" "<feComponentTransfer" " />"-{-# INLINE fecomponenttransfer #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feComposite />@ element.----fecomposite :: Svg -- ^ Resulting SVG.-fecomposite = Leaf "feComposite" "<feComposite" " />"-{-# INLINE fecomposite #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feConvolveMatrix />@ element.----feconvolvematrix :: Svg -- ^ Resulting SVG.-feconvolvematrix = Leaf "feConvolveMatrix" "<feConvolveMatrix" " />"-{-# INLINE feconvolvematrix #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feDiffuseLighting />@ element.----fediffuselighting :: Svg -- ^ Resulting SVG.-fediffuselighting = Leaf "feDiffuseLighting" "<feDiffuseLighting" " />"-{-# INLINE fediffuselighting #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feDisplacementMap />@ element.----fedisplacementmap :: Svg -- ^ Resulting SVG.-fedisplacementmap = Leaf "feDisplacementMap" "<feDisplacementMap" " />"-{-# INLINE fedisplacementmap #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feDistantLight />@ element.----fedistantlight :: Svg -- ^ Resulting SVG.-fedistantlight = Leaf "feDistantLight" "<feDistantLight" " />"-{-# INLINE fedistantlight #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feFlood />@ element.----feflood :: Svg -- ^ Resulting SVG.-feflood = Leaf "feFlood" "<feFlood" " />"-{-# INLINE feflood #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feFuncA />@ element.----fefunca :: Svg -- ^ Resulting SVG.-fefunca = Leaf "feFuncA" "<feFuncA" " />"-{-# INLINE fefunca #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feFuncB />@ element.----fefuncb :: Svg -- ^ Resulting SVG.-fefuncb = Leaf "feFuncB" "<feFuncB" " />"-{-# INLINE fefuncb #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feFuncG />@ element.----fefuncg :: Svg -- ^ Resulting SVG.-fefuncg = Leaf "feFuncG" "<feFuncG" " />"-{-# INLINE fefuncg #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feFuncR />@ element.----fefuncr :: Svg -- ^ Resulting SVG.-fefuncr = Leaf "feFuncR" "<feFuncR" " />"-{-# INLINE fefuncr #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feGaussianBlur />@ element.----fegaussianblur :: Svg -- ^ Resulting SVG.-fegaussianblur = Leaf "feGaussianBlur" "<feGaussianBlur" " />"-{-# INLINE fegaussianblur #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feImage />@ element.----feimage :: Svg -- ^ Resulting SVG.-feimage = Leaf "feImage" "<feImage" " />"-{-# INLINE feimage #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feMerge />@ element.----femerge :: Svg -- ^ Resulting SVG.-femerge = Leaf "feMerge" "<feMerge" " />"-{-# INLINE femerge #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feMergeNode />@ element.----femergenode :: Svg -- ^ Resulting SVG.-femergenode = Leaf "feMergeNode" "<feMergeNode" " />"-{-# INLINE femergenode #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feMorphology />@ element.----femorphology :: Svg -- ^ Resulting SVG.-femorphology = Leaf "feMorphology" "<feMorphology" " />"-{-# INLINE femorphology #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feOffset />@ element.----feoffset :: Svg -- ^ Resulting SVG.-feoffset = Leaf "feOffset" "<feOffset" " />"-{-# INLINE feoffset #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<fePointLight />@ element.----fepointlight :: Svg -- ^ Resulting SVG.-fepointlight = Leaf "fePointLight" "<fePointLight" " />"-{-# INLINE fepointlight #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feSpecularLighting />@ element.----fespecularlighting :: Svg -- ^ Resulting SVG.-fespecularlighting = Leaf "feSpecularLighting" "<feSpecularLighting" " />"-{-# INLINE fespecularlighting #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feSpotLight />@ element.----fespotlight :: Svg -- ^ Resulting SVG.-fespotlight = Leaf "feSpotLight" "<feSpotLight" " />"-{-# INLINE fespotlight #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feTile />@ element.----fetile :: Svg -- ^ Resulting SVG.-fetile = Leaf "feTile" "<feTile" " />"-{-# INLINE fetile #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<feTurbulence />@ element.----feturbulence :: Svg -- ^ Resulting SVG.-feturbulence = Leaf "feTurbulence" "<feTurbulence" " />"-{-# INLINE feturbulence #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<filter />@ element.----filter_ :: Svg -- ^ Resulting SVG.-filter_ = Leaf "filter" "<filter" " />"-{-# INLINE filter_ #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<font />@ element.----font :: Svg -- ^ Resulting SVG.-font = Leaf "font" "<font" " />"-{-# INLINE font #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<font-face />@ element.----fontFace :: Svg -- ^ Resulting SVG.-fontFace = Leaf "font-face" "<font-face" " />"-{-# INLINE fontFace #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<font-face-format />@ element.----fontFaceFormat :: Svg -- ^ Resulting SVG.-fontFaceFormat = Leaf "font-face-format" "<font-face-format" " />"-{-# INLINE fontFaceFormat #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<font-face-name />@ element.----fontFaceName :: Svg -- ^ Resulting SVG.-fontFaceName = Leaf "font-face-name" "<font-face-name" " />"-{-# INLINE fontFaceName #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<font-face-src />@ element.----fontFaceSrc :: Svg -- ^ Resulting SVG.-fontFaceSrc = Leaf "font-face-src" "<font-face-src" " />"-{-# INLINE fontFaceSrc #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<font-face-uri />@ element.----fontFaceUri :: Svg -- ^ Resulting SVG.-fontFaceUri = Leaf "font-face-uri" "<font-face-uri" " />"-{-# INLINE fontFaceUri #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<foreignObject />@ element.----foreignobject :: Svg -- ^ Resulting SVG.-foreignobject = Leaf "foreignObject" "<foreignObject" " />"-{-# INLINE foreignobject #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:188------ | Combinator for the @\<g>@ element.----g :: Svg -- ^ Inner SVG.- -> Svg -- ^ Resulting SVG.-g = Parent "g" "<g" "</g>"-{-# INLINE g #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:188------ | Combinator for the @\<glyph>@ element.----glyph :: Svg -- ^ Inner SVG.- -> Svg -- ^ Resulting SVG.-glyph = Parent "glyph" "<glyph" "</glyph>"-{-# INLINE glyph #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<glyphRef />@ element.----glyphref :: Svg -- ^ Resulting SVG.-glyphref = Leaf "glyphRef" "<glyphRef" " />"-{-# INLINE glyphref #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<hkern />@ element.----hkern :: Svg -- ^ Resulting SVG.-hkern = Leaf "hkern" "<hkern" " />"-{-# INLINE hkern #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<image />@ element.----image :: Svg -- ^ Resulting SVG.-image = Leaf "image" "<image" " />"-{-# INLINE image #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<line />@ element.----line :: Svg -- ^ Resulting SVG.-line = Leaf "line" "<line" " />"-{-# INLINE line #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:188------ | Combinator for the @\<linearGradient>@ element.----lineargradient :: Svg -- ^ Inner SVG.- -> Svg -- ^ Resulting SVG.-lineargradient = Parent "linearGradient" "<linearGradient" "</linearGradient>"-{-# INLINE lineargradient #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:188------ | Combinator for the @\<marker>@ element.----marker :: Svg -- ^ Inner SVG.- -> Svg -- ^ Resulting SVG.-marker = Parent "marker" "<marker" "</marker>"-{-# INLINE marker #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:188------ | Combinator for the @\<mask>@ element.----mask :: Svg -- ^ Inner SVG.- -> Svg -- ^ Resulting SVG.-mask = Parent "mask" "<mask" "</mask>"-{-# INLINE mask #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<metadata />@ element.----metadata :: Svg -- ^ Resulting SVG.-metadata = Leaf "metadata" "<metadata" " />"-{-# INLINE metadata #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:188------ | Combinator for the @\<missing-glyph>@ element.----missingGlyph :: Svg -- ^ Inner SVG.- -> Svg -- ^ Resulting SVG.-missingGlyph = Parent "missing-glyph" "<missing-glyph" "</missing-glyph>"-{-# INLINE missingGlyph #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<mpath />@ element.----mpath :: Svg -- ^ Resulting SVG.-mpath = Leaf "mpath" "<mpath" " />"-{-# INLINE mpath #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<path />@ element.----path :: Svg -- ^ Resulting SVG.-path = Leaf "path" "<path" " />"-{-# INLINE path #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:188------ | Combinator for the @\<pattern>@ element.----pattern :: Svg -- ^ Inner SVG.- -> Svg -- ^ Resulting SVG.-pattern = Parent "pattern" "<pattern" "</pattern>"-{-# INLINE pattern #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<polygon />@ element.----polygon :: Svg -- ^ Resulting SVG.-polygon = Leaf "polygon" "<polygon" " />"-{-# INLINE polygon #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<polyline />@ element.----polyline :: Svg -- ^ Resulting SVG.-polyline = Leaf "polyline" "<polyline" " />"-{-# INLINE polyline #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:188------ | Combinator for the @\<radialGradient>@ element.----radialgradient :: Svg -- ^ Inner SVG.- -> Svg -- ^ Resulting SVG.-radialgradient = Parent "radialGradient" "<radialGradient" "</radialGradient>"-{-# INLINE radialgradient #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<rect />@ element.----rect :: Svg -- ^ Resulting SVG.-rect = Leaf "rect" "<rect" " />"-{-# INLINE rect #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<script />@ element.----script :: Svg -- ^ Resulting SVG.-script = Leaf "script" "<script" " />"-{-# INLINE script #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<set />@ element.----set :: Svg -- ^ Resulting SVG.-set = Leaf "set" "<set" " />"-{-# INLINE set #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<stop />@ element.----stop :: Svg -- ^ Resulting SVG.-stop = Leaf "stop" "<stop" " />"-{-# INLINE stop #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<style />@ element.----style :: Svg -- ^ Resulting SVG.-style = Leaf "style" "<style" " />"-{-# INLINE style #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:188------ | Combinator for the @\<svg>@ element.----svg :: Svg -- ^ Inner SVG.- -> Svg -- ^ Resulting SVG.-svg = Parent "svg" "<svg" "</svg>"-{-# INLINE svg #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:188------ | Combinator for the @\<switch>@ element.----switch :: Svg -- ^ Inner SVG.- -> Svg -- ^ Resulting SVG.-switch = Parent "switch" "<switch" "</switch>"-{-# INLINE switch #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:188------ | Combinator for the @\<symbol>@ element.----symbol :: Svg -- ^ Inner SVG.- -> Svg -- ^ Resulting SVG.-symbol = Parent "symbol" "<symbol" "</symbol>"-{-# INLINE symbol #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<text />@ element.----text_ :: Svg -- ^ Resulting SVG.-text_ = Leaf "text" "<text" " />"-{-# INLINE text_ #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<textPath />@ element.----textpath :: Svg -- ^ Resulting SVG.-textpath = Leaf "textPath" "<textPath" " />"-{-# INLINE textpath #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<title />@ element.----title :: Svg -- ^ Resulting SVG.-title = Leaf "title" "<title" " />"-{-# INLINE title #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<tref />@ element.----tref :: Svg -- ^ Resulting SVG.-tref = Leaf "tref" "<tref" " />"-{-# INLINE tref #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<tspan />@ element.----tspan :: Svg -- ^ Resulting SVG.-tspan = Leaf "tspan" "<tspan" " />"-{-# INLINE tspan #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<use />@ element.----use :: Svg -- ^ Resulting SVG.-use = Leaf "use" "<use" " />"-{-# INLINE use #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<view />@ element.----view :: Svg -- ^ Resulting SVG.-view = Leaf "view" "<view" " />"-{-# INLINE view #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:207------ | Combinator for the @\<vkern />@ element.----vkern :: Svg -- ^ Resulting SVG.-vkern = Leaf "vkern" "<vkern" " />"-{-# INLINE vkern #-}
− Text/Blaze/Svg11/Attributes.hs
@@ -1,2942 +0,0 @@--- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:94------ | This module exports combinators that provide you with the--- ability to set attributes on SVG elements.----{-# LANGUAGE OverloadedStrings #-}-module Text.Blaze.Svg11.Attributes- ( accentHeight- , accumulate- , additive- , alignmentBaseline- , alphabetic- , amplitude- , arabicForm- , ascent- , attributename- , attributetype- , azimuth- , basefrequency- , baseprofile- , baselineShift- , bbox- , begin- , bias- , by- , calcmode- , capHeight- , class_- , clip- , clipPath- , clipRule- , clippathunits- , color- , colorInterpolation- , colorInterpolationFilters- , colorProfile- , colorRendering- , contentscripttype- , contentstyletype- , cursor- , cx- , cy- , d- , descent- , diffuseconstant- , direction- , display- , divisor- , dominantBaseline- , dur- , dx- , dy- , edgemode- , elevation- , enableBackground- , end- , exponent_- , externalresourcesrequired- , fill- , fillOpacity- , fillRule- , filter_- , filterres- , filterunits- , floodColor- , floodOpacity- , fontFamily- , fontSize- , fontSizeAdjust- , fontStretch- , fontStyle- , fontVariant- , fontWeight- , format- , from- , fx- , fy- , g1- , g2- , glyphName- , glyphOrientationHorizontal- , glyphOrientationVertical- , glyphref- , gradienttransform- , gradientunits- , hanging- , height- , horizAdvX- , horizOriginX- , horizOriginY- , id_- , ideographic- , imageRendering- , in_- , in2- , intercept- , k- , k1- , k2- , k3- , k4- , kernelmatrix- , kernelunitlength- , kerning- , keypoints- , keysplines- , keytimes- , lang- , lengthadjust- , letterSpacing- , lightingColor- , limitingconeangle- , local- , markerEnd- , markerMid- , markerStart- , markerheight- , markerunits- , markerwidth- , mask- , maskcontentunits- , maskunits- , mathematical- , max_- , media- , method- , min_- , mode- , name- , numoctaves- , offset- , onabort- , onactivate- , onbegin- , onclick- , onend- , onerror- , onfocusin- , onfocusout- , onload- , onmousedown- , onmousemove- , onmouseout- , onmouseover- , onmouseup- , onrepeat- , onresize- , onscroll- , onunload- , onzoom- , opacity- , operator- , order- , orient- , orientation- , origin- , overflow- , overlinePosition- , overlineThickness- , panose1- , path- , pathlength- , patterncontentunits- , patterntransform- , patternunits- , pointerEvents- , points- , pointsatx- , pointsaty- , pointsatz- , preservealpha- , preserveaspectratio- , primitiveunits- , r- , radius- , refx- , refy- , renderingIntent- , repeatcount- , repeatdur- , requiredextensions- , requiredfeatures- , restart- , result- , rotate- , rx- , ry- , scale- , seed- , shapeRendering- , slope- , spacing- , specularconstant- , specularexponent- , spreadmethod- , startoffset- , stddeviation- , stemh- , stemv- , stitchtiles- , stopColor- , stopOpacity- , strikethroughPosition- , strikethroughThickness- , string- , stroke- , strokeDasharray- , strokeDashoffset- , strokeLinecap- , strokeLinejoin- , strokeMiterlimit- , strokeOpacity- , strokeWidth- , style- , surfacescale- , systemlanguage- , tablevalues- , target- , targetx- , targety- , textAnchor- , textDecoration- , textRendering- , textlength- , title- , to- , transform- , type_- , u1- , u2- , underlinePosition- , underlineThickness- , unicode- , unicodeBidi- , unicodeRange- , unitsPerEm- , vAlphabetic- , vHanging- , vIdeographic- , vMathematical- , values- , version- , vertAdvY- , vertOriginX- , vertOriginY- , viewbox- , viewtarget- , visibility- , width- , widths- , wordSpacing- , writingMode- , x- , xHeight- , x1- , x2- , xchannelselector- , xlinkActuate- , xlinkArcrole- , xlinkHref- , xlinkRole- , xlinkShow- , xlinkTitle- , xlinkType- , xmlBase- , xmlLang- , xmlSpace- , y- , y1- , y2- , ychannelselector- , z- , zoomandpan- ) where---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:100----import Prelude ()--import Text.Blaze.Internal (Attribute, AttributeValue, attribute)---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @accent-height@ attribute.----accentHeight :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-accentHeight = attribute "accent-height" " accent-height=\""-{-# INLINE accentHeight #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @accumulate@ attribute.----accumulate :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-accumulate = attribute "accumulate" " accumulate=\""-{-# INLINE accumulate #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @additive@ attribute.----additive :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-additive = attribute "additive" " additive=\""-{-# INLINE additive #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @alignment-baseline@ attribute.----alignmentBaseline :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-alignmentBaseline = attribute "alignment-baseline" " alignment-baseline=\""-{-# INLINE alignmentBaseline #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @alphabetic@ attribute.----alphabetic :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-alphabetic = attribute "alphabetic" " alphabetic=\""-{-# INLINE alphabetic #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @amplitude@ attribute.----amplitude :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-amplitude = attribute "amplitude" " amplitude=\""-{-# INLINE amplitude #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @arabic-form@ attribute.----arabicForm :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-arabicForm = attribute "arabic-form" " arabic-form=\""-{-# INLINE arabicForm #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @ascent@ attribute.----ascent :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-ascent = attribute "ascent" " ascent=\""-{-# INLINE ascent #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @attributeName@ attribute.----attributename :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-attributename = attribute "attributeName" " attributeName=\""-{-# INLINE attributename #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @attributeType@ attribute.----attributetype :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-attributetype = attribute "attributeType" " attributeType=\""-{-# INLINE attributetype #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @azimuth@ attribute.----azimuth :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-azimuth = attribute "azimuth" " azimuth=\""-{-# INLINE azimuth #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @baseFrequency@ attribute.----basefrequency :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-basefrequency = attribute "baseFrequency" " baseFrequency=\""-{-# INLINE basefrequency #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @baseProfile@ attribute.----baseprofile :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-baseprofile = attribute "baseProfile" " baseProfile=\""-{-# INLINE baseprofile #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @baseline-shift@ attribute.----baselineShift :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-baselineShift = attribute "baseline-shift" " baseline-shift=\""-{-# INLINE baselineShift #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @bbox@ attribute.----bbox :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-bbox = attribute "bbox" " bbox=\""-{-# INLINE bbox #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @begin@ attribute.----begin :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-begin = attribute "begin" " begin=\""-{-# INLINE begin #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @bias@ attribute.----bias :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-bias = attribute "bias" " bias=\""-{-# INLINE bias #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @by@ attribute.----by :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-by = attribute "by" " by=\""-{-# INLINE by #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @calcMode@ attribute.----calcmode :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-calcmode = attribute "calcMode" " calcMode=\""-{-# INLINE calcmode #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @cap-height@ attribute.----capHeight :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-capHeight = attribute "cap-height" " cap-height=\""-{-# INLINE capHeight #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @class@ attribute.----class_ :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-class_ = attribute "class" " class=\""-{-# INLINE class_ #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @clip@ attribute.----clip :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-clip = attribute "clip" " clip=\""-{-# INLINE clip #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @clip-path@ attribute.----clipPath :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-clipPath = attribute "clip-path" " clip-path=\""-{-# INLINE clipPath #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @clip-rule@ attribute.----clipRule :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-clipRule = attribute "clip-rule" " clip-rule=\""-{-# INLINE clipRule #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @clipPathUnits@ attribute.----clippathunits :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-clippathunits = attribute "clipPathUnits" " clipPathUnits=\""-{-# INLINE clippathunits #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @color@ attribute.----color :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-color = attribute "color" " color=\""-{-# INLINE color #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @color-interpolation@ attribute.----colorInterpolation :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-colorInterpolation = attribute "color-interpolation" " color-interpolation=\""-{-# INLINE colorInterpolation #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @color-interpolation-filters@ attribute.----colorInterpolationFilters :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-colorInterpolationFilters = attribute "color-interpolation-filters" " color-interpolation-filters=\""-{-# INLINE colorInterpolationFilters #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @color-profile@ attribute.----colorProfile :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-colorProfile = attribute "color-profile" " color-profile=\""-{-# INLINE colorProfile #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @color-rendering@ attribute.----colorRendering :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-colorRendering = attribute "color-rendering" " color-rendering=\""-{-# INLINE colorRendering #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @contentScriptType@ attribute.----contentscripttype :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-contentscripttype = attribute "contentScriptType" " contentScriptType=\""-{-# INLINE contentscripttype #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @contentStyleType@ attribute.----contentstyletype :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-contentstyletype = attribute "contentStyleType" " contentStyleType=\""-{-# INLINE contentstyletype #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @cursor@ attribute.----cursor :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-cursor = attribute "cursor" " cursor=\""-{-# INLINE cursor #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @cx@ attribute.----cx :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-cx = attribute "cx" " cx=\""-{-# INLINE cx #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @cy@ attribute.----cy :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-cy = attribute "cy" " cy=\""-{-# INLINE cy #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @d@ attribute.----d :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-d = attribute "d" " d=\""-{-# INLINE d #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @descent@ attribute.----descent :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-descent = attribute "descent" " descent=\""-{-# INLINE descent #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @diffuseConstant@ attribute.----diffuseconstant :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-diffuseconstant = attribute "diffuseConstant" " diffuseConstant=\""-{-# INLINE diffuseconstant #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @direction@ attribute.----direction :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-direction = attribute "direction" " direction=\""-{-# INLINE direction #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @display@ attribute.----display :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-display = attribute "display" " display=\""-{-# INLINE display #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @divisor@ attribute.----divisor :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-divisor = attribute "divisor" " divisor=\""-{-# INLINE divisor #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @dominant-baseline@ attribute.----dominantBaseline :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-dominantBaseline = attribute "dominant-baseline" " dominant-baseline=\""-{-# INLINE dominantBaseline #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @dur@ attribute.----dur :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-dur = attribute "dur" " dur=\""-{-# INLINE dur #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @dx@ attribute.----dx :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-dx = attribute "dx" " dx=\""-{-# INLINE dx #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @dy@ attribute.----dy :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-dy = attribute "dy" " dy=\""-{-# INLINE dy #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @edgeMode@ attribute.----edgemode :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-edgemode = attribute "edgeMode" " edgeMode=\""-{-# INLINE edgemode #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @elevation@ attribute.----elevation :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-elevation = attribute "elevation" " elevation=\""-{-# INLINE elevation #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @enable-background@ attribute.----enableBackground :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-enableBackground = attribute "enable-background" " enable-background=\""-{-# INLINE enableBackground #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @end@ attribute.----end :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-end = attribute "end" " end=\""-{-# INLINE end #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @exponent@ attribute.----exponent_ :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-exponent_ = attribute "exponent" " exponent=\""-{-# INLINE exponent_ #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @externalResourcesRequired@ attribute.----externalresourcesrequired :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-externalresourcesrequired = attribute "externalResourcesRequired" " externalResourcesRequired=\""-{-# INLINE externalresourcesrequired #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @fill@ attribute.----fill :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-fill = attribute "fill" " fill=\""-{-# INLINE fill #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @fill-opacity@ attribute.----fillOpacity :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-fillOpacity = attribute "fill-opacity" " fill-opacity=\""-{-# INLINE fillOpacity #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @fill-rule@ attribute.----fillRule :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-fillRule = attribute "fill-rule" " fill-rule=\""-{-# INLINE fillRule #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @filter@ attribute.----filter_ :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-filter_ = attribute "filter" " filter=\""-{-# INLINE filter_ #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @filterRes@ attribute.----filterres :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-filterres = attribute "filterRes" " filterRes=\""-{-# INLINE filterres #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @filterUnits@ attribute.----filterunits :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-filterunits = attribute "filterUnits" " filterUnits=\""-{-# INLINE filterunits #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @flood-color@ attribute.----floodColor :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-floodColor = attribute "flood-color" " flood-color=\""-{-# INLINE floodColor #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @flood-opacity@ attribute.----floodOpacity :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-floodOpacity = attribute "flood-opacity" " flood-opacity=\""-{-# INLINE floodOpacity #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @font-family@ attribute.----fontFamily :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-fontFamily = attribute "font-family" " font-family=\""-{-# INLINE fontFamily #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @font-size@ attribute.----fontSize :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-fontSize = attribute "font-size" " font-size=\""-{-# INLINE fontSize #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @font-size-adjust@ attribute.----fontSizeAdjust :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-fontSizeAdjust = attribute "font-size-adjust" " font-size-adjust=\""-{-# INLINE fontSizeAdjust #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @font-stretch@ attribute.----fontStretch :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-fontStretch = attribute "font-stretch" " font-stretch=\""-{-# INLINE fontStretch #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @font-style@ attribute.----fontStyle :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-fontStyle = attribute "font-style" " font-style=\""-{-# INLINE fontStyle #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @font-variant@ attribute.----fontVariant :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-fontVariant = attribute "font-variant" " font-variant=\""-{-# INLINE fontVariant #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @font-weight@ attribute.----fontWeight :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-fontWeight = attribute "font-weight" " font-weight=\""-{-# INLINE fontWeight #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @format@ attribute.----format :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-format = attribute "format" " format=\""-{-# INLINE format #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @from@ attribute.----from :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-from = attribute "from" " from=\""-{-# INLINE from #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @fx@ attribute.----fx :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-fx = attribute "fx" " fx=\""-{-# INLINE fx #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @fy@ attribute.----fy :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-fy = attribute "fy" " fy=\""-{-# INLINE fy #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @g1@ attribute.----g1 :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-g1 = attribute "g1" " g1=\""-{-# INLINE g1 #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @g2@ attribute.----g2 :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-g2 = attribute "g2" " g2=\""-{-# INLINE g2 #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @glyph-name@ attribute.----glyphName :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-glyphName = attribute "glyph-name" " glyph-name=\""-{-# INLINE glyphName #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @glyph-orientation-horizontal@ attribute.----glyphOrientationHorizontal :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-glyphOrientationHorizontal = attribute "glyph-orientation-horizontal" " glyph-orientation-horizontal=\""-{-# INLINE glyphOrientationHorizontal #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @glyph-orientation-vertical@ attribute.----glyphOrientationVertical :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-glyphOrientationVertical = attribute "glyph-orientation-vertical" " glyph-orientation-vertical=\""-{-# INLINE glyphOrientationVertical #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @glyphRef@ attribute.----glyphref :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-glyphref = attribute "glyphRef" " glyphRef=\""-{-# INLINE glyphref #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @gradientTransform@ attribute.----gradienttransform :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-gradienttransform = attribute "gradientTransform" " gradientTransform=\""-{-# INLINE gradienttransform #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @gradientUnits@ attribute.----gradientunits :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-gradientunits = attribute "gradientUnits" " gradientUnits=\""-{-# INLINE gradientunits #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @hanging@ attribute.----hanging :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-hanging = attribute "hanging" " hanging=\""-{-# INLINE hanging #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @height@ attribute.----height :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-height = attribute "height" " height=\""-{-# INLINE height #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @horiz-adv-x@ attribute.----horizAdvX :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-horizAdvX = attribute "horiz-adv-x" " horiz-adv-x=\""-{-# INLINE horizAdvX #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @horiz-origin-x@ attribute.----horizOriginX :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-horizOriginX = attribute "horiz-origin-x" " horiz-origin-x=\""-{-# INLINE horizOriginX #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @horiz-origin-y@ attribute.----horizOriginY :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-horizOriginY = attribute "horiz-origin-y" " horiz-origin-y=\""-{-# INLINE horizOriginY #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @id@ attribute.----id_ :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-id_ = attribute "id" " id=\""-{-# INLINE id_ #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @ideographic@ attribute.----ideographic :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-ideographic = attribute "ideographic" " ideographic=\""-{-# INLINE ideographic #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @image-rendering@ attribute.----imageRendering :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-imageRendering = attribute "image-rendering" " image-rendering=\""-{-# INLINE imageRendering #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @in@ attribute.----in_ :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-in_ = attribute "in" " in=\""-{-# INLINE in_ #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @in2@ attribute.----in2 :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-in2 = attribute "in2" " in2=\""-{-# INLINE in2 #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @intercept@ attribute.----intercept :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-intercept = attribute "intercept" " intercept=\""-{-# INLINE intercept #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @k@ attribute.----k :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-k = attribute "k" " k=\""-{-# INLINE k #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @k1@ attribute.----k1 :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-k1 = attribute "k1" " k1=\""-{-# INLINE k1 #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @k2@ attribute.----k2 :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-k2 = attribute "k2" " k2=\""-{-# INLINE k2 #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @k3@ attribute.----k3 :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-k3 = attribute "k3" " k3=\""-{-# INLINE k3 #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @k4@ attribute.----k4 :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-k4 = attribute "k4" " k4=\""-{-# INLINE k4 #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @kernelMatrix@ attribute.----kernelmatrix :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-kernelmatrix = attribute "kernelMatrix" " kernelMatrix=\""-{-# INLINE kernelmatrix #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @kernelUnitLength@ attribute.----kernelunitlength :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-kernelunitlength = attribute "kernelUnitLength" " kernelUnitLength=\""-{-# INLINE kernelunitlength #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @kerning@ attribute.----kerning :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-kerning = attribute "kerning" " kerning=\""-{-# INLINE kerning #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @keyPoints@ attribute.----keypoints :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-keypoints = attribute "keyPoints" " keyPoints=\""-{-# INLINE keypoints #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @keySplines@ attribute.----keysplines :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-keysplines = attribute "keySplines" " keySplines=\""-{-# INLINE keysplines #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @keyTimes@ attribute.----keytimes :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-keytimes = attribute "keyTimes" " keyTimes=\""-{-# INLINE keytimes #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @lang@ attribute.----lang :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-lang = attribute "lang" " lang=\""-{-# INLINE lang #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @lengthAdjust@ attribute.----lengthadjust :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-lengthadjust = attribute "lengthAdjust" " lengthAdjust=\""-{-# INLINE lengthadjust #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @letter-spacing@ attribute.----letterSpacing :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-letterSpacing = attribute "letter-spacing" " letter-spacing=\""-{-# INLINE letterSpacing #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @lighting-color@ attribute.----lightingColor :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-lightingColor = attribute "lighting-color" " lighting-color=\""-{-# INLINE lightingColor #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @limitingConeAngle@ attribute.----limitingconeangle :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-limitingconeangle = attribute "limitingConeAngle" " limitingConeAngle=\""-{-# INLINE limitingconeangle #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @local@ attribute.----local :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-local = attribute "local" " local=\""-{-# INLINE local #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @marker-end@ attribute.----markerEnd :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-markerEnd = attribute "marker-end" " marker-end=\""-{-# INLINE markerEnd #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @marker-mid@ attribute.----markerMid :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-markerMid = attribute "marker-mid" " marker-mid=\""-{-# INLINE markerMid #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @marker-start@ attribute.----markerStart :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-markerStart = attribute "marker-start" " marker-start=\""-{-# INLINE markerStart #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @markerHeight@ attribute.----markerheight :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-markerheight = attribute "markerHeight" " markerHeight=\""-{-# INLINE markerheight #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @markerUnits@ attribute.----markerunits :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-markerunits = attribute "markerUnits" " markerUnits=\""-{-# INLINE markerunits #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @markerWidth@ attribute.----markerwidth :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-markerwidth = attribute "markerWidth" " markerWidth=\""-{-# INLINE markerwidth #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @mask@ attribute.----mask :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-mask = attribute "mask" " mask=\""-{-# INLINE mask #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @maskContentUnits@ attribute.----maskcontentunits :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-maskcontentunits = attribute "maskContentUnits" " maskContentUnits=\""-{-# INLINE maskcontentunits #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @maskUnits@ attribute.----maskunits :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-maskunits = attribute "maskUnits" " maskUnits=\""-{-# INLINE maskunits #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @mathematical@ attribute.----mathematical :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-mathematical = attribute "mathematical" " mathematical=\""-{-# INLINE mathematical #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @max@ attribute.----max_ :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-max_ = attribute "max" " max=\""-{-# INLINE max_ #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @media@ attribute.----media :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-media = attribute "media" " media=\""-{-# INLINE media #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @method@ attribute.----method :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-method = attribute "method" " method=\""-{-# INLINE method #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @min@ attribute.----min_ :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-min_ = attribute "min" " min=\""-{-# INLINE min_ #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @mode@ attribute.----mode :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-mode = attribute "mode" " mode=\""-{-# INLINE mode #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @name@ attribute.----name :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-name = attribute "name" " name=\""-{-# INLINE name #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @numOctaves@ attribute.----numoctaves :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-numoctaves = attribute "numOctaves" " numOctaves=\""-{-# INLINE numoctaves #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @offset@ attribute.----offset :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-offset = attribute "offset" " offset=\""-{-# INLINE offset #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @onabort@ attribute.----onabort :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-onabort = attribute "onabort" " onabort=\""-{-# INLINE onabort #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @onactivate@ attribute.----onactivate :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-onactivate = attribute "onactivate" " onactivate=\""-{-# INLINE onactivate #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @onbegin@ attribute.----onbegin :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-onbegin = attribute "onbegin" " onbegin=\""-{-# INLINE onbegin #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @onclick@ attribute.----onclick :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-onclick = attribute "onclick" " onclick=\""-{-# INLINE onclick #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @onend@ attribute.----onend :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-onend = attribute "onend" " onend=\""-{-# INLINE onend #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @onerror@ attribute.----onerror :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-onerror = attribute "onerror" " onerror=\""-{-# INLINE onerror #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @onfocusin@ attribute.----onfocusin :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-onfocusin = attribute "onfocusin" " onfocusin=\""-{-# INLINE onfocusin #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @onfocusout@ attribute.----onfocusout :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-onfocusout = attribute "onfocusout" " onfocusout=\""-{-# INLINE onfocusout #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @onload@ attribute.----onload :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-onload = attribute "onload" " onload=\""-{-# INLINE onload #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @onmousedown@ attribute.----onmousedown :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-onmousedown = attribute "onmousedown" " onmousedown=\""-{-# INLINE onmousedown #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @onmousemove@ attribute.----onmousemove :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-onmousemove = attribute "onmousemove" " onmousemove=\""-{-# INLINE onmousemove #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @onmouseout@ attribute.----onmouseout :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-onmouseout = attribute "onmouseout" " onmouseout=\""-{-# INLINE onmouseout #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @onmouseover@ attribute.----onmouseover :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-onmouseover = attribute "onmouseover" " onmouseover=\""-{-# INLINE onmouseover #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @onmouseup@ attribute.----onmouseup :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-onmouseup = attribute "onmouseup" " onmouseup=\""-{-# INLINE onmouseup #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @onrepeat@ attribute.----onrepeat :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-onrepeat = attribute "onrepeat" " onrepeat=\""-{-# INLINE onrepeat #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @onresize@ attribute.----onresize :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-onresize = attribute "onresize" " onresize=\""-{-# INLINE onresize #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @onscroll@ attribute.----onscroll :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-onscroll = attribute "onscroll" " onscroll=\""-{-# INLINE onscroll #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @onunload@ attribute.----onunload :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-onunload = attribute "onunload" " onunload=\""-{-# INLINE onunload #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @onzoom@ attribute.----onzoom :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-onzoom = attribute "onzoom" " onzoom=\""-{-# INLINE onzoom #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @opacity@ attribute.----opacity :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-opacity = attribute "opacity" " opacity=\""-{-# INLINE opacity #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @operator@ attribute.----operator :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-operator = attribute "operator" " operator=\""-{-# INLINE operator #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @order@ attribute.----order :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-order = attribute "order" " order=\""-{-# INLINE order #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @orient@ attribute.----orient :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-orient = attribute "orient" " orient=\""-{-# INLINE orient #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @orientation@ attribute.----orientation :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-orientation = attribute "orientation" " orientation=\""-{-# INLINE orientation #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @origin@ attribute.----origin :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-origin = attribute "origin" " origin=\""-{-# INLINE origin #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @overflow@ attribute.----overflow :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-overflow = attribute "overflow" " overflow=\""-{-# INLINE overflow #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @overline-position@ attribute.----overlinePosition :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-overlinePosition = attribute "overline-position" " overline-position=\""-{-# INLINE overlinePosition #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @overline-thickness@ attribute.----overlineThickness :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-overlineThickness = attribute "overline-thickness" " overline-thickness=\""-{-# INLINE overlineThickness #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @panose-1@ attribute.----panose1 :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-panose1 = attribute "panose-1" " panose-1=\""-{-# INLINE panose1 #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @path@ attribute.----path :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-path = attribute "path" " path=\""-{-# INLINE path #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @pathLength@ attribute.----pathlength :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-pathlength = attribute "pathLength" " pathLength=\""-{-# INLINE pathlength #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @patternContentUnits@ attribute.----patterncontentunits :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-patterncontentunits = attribute "patternContentUnits" " patternContentUnits=\""-{-# INLINE patterncontentunits #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @patternTransform@ attribute.----patterntransform :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-patterntransform = attribute "patternTransform" " patternTransform=\""-{-# INLINE patterntransform #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @patternUnits@ attribute.----patternunits :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-patternunits = attribute "patternUnits" " patternUnits=\""-{-# INLINE patternunits #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @pointer-events@ attribute.----pointerEvents :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-pointerEvents = attribute "pointer-events" " pointer-events=\""-{-# INLINE pointerEvents #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @points@ attribute.----points :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-points = attribute "points" " points=\""-{-# INLINE points #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @pointsAtX@ attribute.----pointsatx :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-pointsatx = attribute "pointsAtX" " pointsAtX=\""-{-# INLINE pointsatx #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @pointsAtY@ attribute.----pointsaty :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-pointsaty = attribute "pointsAtY" " pointsAtY=\""-{-# INLINE pointsaty #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @pointsAtZ@ attribute.----pointsatz :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-pointsatz = attribute "pointsAtZ" " pointsAtZ=\""-{-# INLINE pointsatz #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @preserveAlpha@ attribute.----preservealpha :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-preservealpha = attribute "preserveAlpha" " preserveAlpha=\""-{-# INLINE preservealpha #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @preserveAspectRatio@ attribute.----preserveaspectratio :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-preserveaspectratio = attribute "preserveAspectRatio" " preserveAspectRatio=\""-{-# INLINE preserveaspectratio #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @primitiveUnits@ attribute.----primitiveunits :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-primitiveunits = attribute "primitiveUnits" " primitiveUnits=\""-{-# INLINE primitiveunits #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @r@ attribute.----r :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-r = attribute "r" " r=\""-{-# INLINE r #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @radius@ attribute.----radius :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-radius = attribute "radius" " radius=\""-{-# INLINE radius #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @refX@ attribute.----refx :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-refx = attribute "refX" " refX=\""-{-# INLINE refx #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @refY@ attribute.----refy :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-refy = attribute "refY" " refY=\""-{-# INLINE refy #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @rendering-intent@ attribute.----renderingIntent :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-renderingIntent = attribute "rendering-intent" " rendering-intent=\""-{-# INLINE renderingIntent #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @repeatCount@ attribute.----repeatcount :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-repeatcount = attribute "repeatCount" " repeatCount=\""-{-# INLINE repeatcount #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @repeatDur@ attribute.----repeatdur :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-repeatdur = attribute "repeatDur" " repeatDur=\""-{-# INLINE repeatdur #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @requiredExtensions@ attribute.----requiredextensions :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-requiredextensions = attribute "requiredExtensions" " requiredExtensions=\""-{-# INLINE requiredextensions #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @requiredFeatures@ attribute.----requiredfeatures :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-requiredfeatures = attribute "requiredFeatures" " requiredFeatures=\""-{-# INLINE requiredfeatures #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @restart@ attribute.----restart :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-restart = attribute "restart" " restart=\""-{-# INLINE restart #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @result@ attribute.----result :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-result = attribute "result" " result=\""-{-# INLINE result #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @rotate@ attribute.----rotate :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-rotate = attribute "rotate" " rotate=\""-{-# INLINE rotate #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @rx@ attribute.----rx :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-rx = attribute "rx" " rx=\""-{-# INLINE rx #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @ry@ attribute.----ry :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-ry = attribute "ry" " ry=\""-{-# INLINE ry #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @scale@ attribute.----scale :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-scale = attribute "scale" " scale=\""-{-# INLINE scale #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @seed@ attribute.----seed :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-seed = attribute "seed" " seed=\""-{-# INLINE seed #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @shape-rendering@ attribute.----shapeRendering :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-shapeRendering = attribute "shape-rendering" " shape-rendering=\""-{-# INLINE shapeRendering #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @slope@ attribute.----slope :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-slope = attribute "slope" " slope=\""-{-# INLINE slope #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @spacing@ attribute.----spacing :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-spacing = attribute "spacing" " spacing=\""-{-# INLINE spacing #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @specularConstant@ attribute.----specularconstant :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-specularconstant = attribute "specularConstant" " specularConstant=\""-{-# INLINE specularconstant #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @specularExponent@ attribute.----specularexponent :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-specularexponent = attribute "specularExponent" " specularExponent=\""-{-# INLINE specularexponent #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @spreadMethod@ attribute.----spreadmethod :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-spreadmethod = attribute "spreadMethod" " spreadMethod=\""-{-# INLINE spreadmethod #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @startOffset@ attribute.----startoffset :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-startoffset = attribute "startOffset" " startOffset=\""-{-# INLINE startoffset #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @stdDeviation@ attribute.----stddeviation :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-stddeviation = attribute "stdDeviation" " stdDeviation=\""-{-# INLINE stddeviation #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @stemh@ attribute.----stemh :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-stemh = attribute "stemh" " stemh=\""-{-# INLINE stemh #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @stemv@ attribute.----stemv :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-stemv = attribute "stemv" " stemv=\""-{-# INLINE stemv #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @stitchTiles@ attribute.----stitchtiles :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-stitchtiles = attribute "stitchTiles" " stitchTiles=\""-{-# INLINE stitchtiles #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @stop-color@ attribute.----stopColor :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-stopColor = attribute "stop-color" " stop-color=\""-{-# INLINE stopColor #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @stop-opacity@ attribute.----stopOpacity :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-stopOpacity = attribute "stop-opacity" " stop-opacity=\""-{-# INLINE stopOpacity #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @strikethrough-position@ attribute.----strikethroughPosition :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-strikethroughPosition = attribute "strikethrough-position" " strikethrough-position=\""-{-# INLINE strikethroughPosition #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @strikethrough-thickness@ attribute.----strikethroughThickness :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-strikethroughThickness = attribute "strikethrough-thickness" " strikethrough-thickness=\""-{-# INLINE strikethroughThickness #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @string@ attribute.----string :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-string = attribute "string" " string=\""-{-# INLINE string #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @stroke@ attribute.----stroke :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-stroke = attribute "stroke" " stroke=\""-{-# INLINE stroke #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @stroke-dasharray@ attribute.----strokeDasharray :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-strokeDasharray = attribute "stroke-dasharray" " stroke-dasharray=\""-{-# INLINE strokeDasharray #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @stroke-dashoffset@ attribute.----strokeDashoffset :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-strokeDashoffset = attribute "stroke-dashoffset" " stroke-dashoffset=\""-{-# INLINE strokeDashoffset #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @stroke-linecap@ attribute.----strokeLinecap :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-strokeLinecap = attribute "stroke-linecap" " stroke-linecap=\""-{-# INLINE strokeLinecap #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @stroke-linejoin@ attribute.----strokeLinejoin :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-strokeLinejoin = attribute "stroke-linejoin" " stroke-linejoin=\""-{-# INLINE strokeLinejoin #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @stroke-miterlimit@ attribute.----strokeMiterlimit :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-strokeMiterlimit = attribute "stroke-miterlimit" " stroke-miterlimit=\""-{-# INLINE strokeMiterlimit #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @stroke-opacity@ attribute.----strokeOpacity :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-strokeOpacity = attribute "stroke-opacity" " stroke-opacity=\""-{-# INLINE strokeOpacity #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @stroke-width@ attribute.----strokeWidth :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-strokeWidth = attribute "stroke-width" " stroke-width=\""-{-# INLINE strokeWidth #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @style@ attribute.----style :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-style = attribute "style" " style=\""-{-# INLINE style #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @surfaceScale@ attribute.----surfacescale :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-surfacescale = attribute "surfaceScale" " surfaceScale=\""-{-# INLINE surfacescale #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @systemLanguage@ attribute.----systemlanguage :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-systemlanguage = attribute "systemLanguage" " systemLanguage=\""-{-# INLINE systemlanguage #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @tableValues@ attribute.----tablevalues :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-tablevalues = attribute "tableValues" " tableValues=\""-{-# INLINE tablevalues #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @target@ attribute.----target :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-target = attribute "target" " target=\""-{-# INLINE target #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @targetX@ attribute.----targetx :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-targetx = attribute "targetX" " targetX=\""-{-# INLINE targetx #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @targetY@ attribute.----targety :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-targety = attribute "targetY" " targetY=\""-{-# INLINE targety #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @text-anchor@ attribute.----textAnchor :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-textAnchor = attribute "text-anchor" " text-anchor=\""-{-# INLINE textAnchor #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @text-decoration@ attribute.----textDecoration :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-textDecoration = attribute "text-decoration" " text-decoration=\""-{-# INLINE textDecoration #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @text-rendering@ attribute.----textRendering :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-textRendering = attribute "text-rendering" " text-rendering=\""-{-# INLINE textRendering #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @textLength@ attribute.----textlength :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-textlength = attribute "textLength" " textLength=\""-{-# INLINE textlength #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @title@ attribute.----title :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-title = attribute "title" " title=\""-{-# INLINE title #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @to@ attribute.----to :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-to = attribute "to" " to=\""-{-# INLINE to #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @transform@ attribute.----transform :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-transform = attribute "transform" " transform=\""-{-# INLINE transform #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @type@ attribute.----type_ :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-type_ = attribute "type" " type=\""-{-# INLINE type_ #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @u1@ attribute.----u1 :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-u1 = attribute "u1" " u1=\""-{-# INLINE u1 #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @u2@ attribute.----u2 :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-u2 = attribute "u2" " u2=\""-{-# INLINE u2 #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @underline-position@ attribute.----underlinePosition :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-underlinePosition = attribute "underline-position" " underline-position=\""-{-# INLINE underlinePosition #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @underline-thickness@ attribute.----underlineThickness :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-underlineThickness = attribute "underline-thickness" " underline-thickness=\""-{-# INLINE underlineThickness #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @unicode@ attribute.----unicode :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-unicode = attribute "unicode" " unicode=\""-{-# INLINE unicode #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @unicode-bidi@ attribute.----unicodeBidi :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-unicodeBidi = attribute "unicode-bidi" " unicode-bidi=\""-{-# INLINE unicodeBidi #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @unicode-range@ attribute.----unicodeRange :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-unicodeRange = attribute "unicode-range" " unicode-range=\""-{-# INLINE unicodeRange #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @units-per-em@ attribute.----unitsPerEm :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-unitsPerEm = attribute "units-per-em" " units-per-em=\""-{-# INLINE unitsPerEm #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @v-alphabetic@ attribute.----vAlphabetic :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-vAlphabetic = attribute "v-alphabetic" " v-alphabetic=\""-{-# INLINE vAlphabetic #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @v-hanging@ attribute.----vHanging :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-vHanging = attribute "v-hanging" " v-hanging=\""-{-# INLINE vHanging #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @v-ideographic@ attribute.----vIdeographic :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-vIdeographic = attribute "v-ideographic" " v-ideographic=\""-{-# INLINE vIdeographic #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @v-mathematical@ attribute.----vMathematical :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-vMathematical = attribute "v-mathematical" " v-mathematical=\""-{-# INLINE vMathematical #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @values@ attribute.----values :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-values = attribute "values" " values=\""-{-# INLINE values #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @version@ attribute.----version :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-version = attribute "version" " version=\""-{-# INLINE version #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @vert-adv-y@ attribute.----vertAdvY :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-vertAdvY = attribute "vert-adv-y" " vert-adv-y=\""-{-# INLINE vertAdvY #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @vert-origin-x@ attribute.----vertOriginX :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-vertOriginX = attribute "vert-origin-x" " vert-origin-x=\""-{-# INLINE vertOriginX #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @vert-origin-y@ attribute.----vertOriginY :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-vertOriginY = attribute "vert-origin-y" " vert-origin-y=\""-{-# INLINE vertOriginY #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @viewBox@ attribute.----viewbox :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-viewbox = attribute "viewBox" " viewBox=\""-{-# INLINE viewbox #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @viewTarget@ attribute.----viewtarget :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-viewtarget = attribute "viewTarget" " viewTarget=\""-{-# INLINE viewtarget #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @visibility@ attribute.----visibility :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-visibility = attribute "visibility" " visibility=\""-{-# INLINE visibility #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @width@ attribute.----width :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-width = attribute "width" " width=\""-{-# INLINE width #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @widths@ attribute.----widths :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-widths = attribute "widths" " widths=\""-{-# INLINE widths #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @word-spacing@ attribute.----wordSpacing :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-wordSpacing = attribute "word-spacing" " word-spacing=\""-{-# INLINE wordSpacing #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @writing-mode@ attribute.----writingMode :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-writingMode = attribute "writing-mode" " writing-mode=\""-{-# INLINE writingMode #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @x@ attribute.----x :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-x = attribute "x" " x=\""-{-# INLINE x #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @x-height@ attribute.----xHeight :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-xHeight = attribute "x-height" " x-height=\""-{-# INLINE xHeight #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @x1@ attribute.----x1 :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-x1 = attribute "x1" " x1=\""-{-# INLINE x1 #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @x2@ attribute.----x2 :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-x2 = attribute "x2" " x2=\""-{-# INLINE x2 #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @xChannelSelector@ attribute.----xchannelselector :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-xchannelselector = attribute "xChannelSelector" " xChannelSelector=\""-{-# INLINE xchannelselector #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @xlink:actuate@ attribute.----xlinkActuate :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-xlinkActuate = attribute "xlink:actuate" " xlink:actuate=\""-{-# INLINE xlinkActuate #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @xlink:arcrole@ attribute.----xlinkArcrole :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-xlinkArcrole = attribute "xlink:arcrole" " xlink:arcrole=\""-{-# INLINE xlinkArcrole #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @xlink:href@ attribute.----xlinkHref :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-xlinkHref = attribute "xlink:href" " xlink:href=\""-{-# INLINE xlinkHref #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @xlink:role@ attribute.----xlinkRole :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-xlinkRole = attribute "xlink:role" " xlink:role=\""-{-# INLINE xlinkRole #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @xlink:show@ attribute.----xlinkShow :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-xlinkShow = attribute "xlink:show" " xlink:show=\""-{-# INLINE xlinkShow #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @xlink:title@ attribute.----xlinkTitle :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-xlinkTitle = attribute "xlink:title" " xlink:title=\""-{-# INLINE xlinkTitle #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @xlink:type@ attribute.----xlinkType :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-xlinkType = attribute "xlink:type" " xlink:type=\""-{-# INLINE xlinkType #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @xml:base@ attribute.----xmlBase :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-xmlBase = attribute "xml:base" " xml:base=\""-{-# INLINE xmlBase #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @xml:lang@ attribute.----xmlLang :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-xmlLang = attribute "xml:lang" " xml:lang=\""-{-# INLINE xmlLang #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @xml:space@ attribute.----xmlSpace :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-xmlSpace = attribute "xml:space" " xml:space=\""-{-# INLINE xmlSpace #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @y@ attribute.----y :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-y = attribute "y" " y=\""-{-# INLINE y #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @y1@ attribute.----y1 :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-y1 = attribute "y1" " y1=\""-{-# INLINE y1 #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @y2@ attribute.----y2 :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-y2 = attribute "y2" " y2=\""-{-# INLINE y2 #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @yChannelSelector@ attribute.----ychannelselector :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-ychannelselector = attribute "yChannelSelector" " yChannelSelector=\""-{-# INLINE ychannelselector #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @z@ attribute.----z :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-z = attribute "z" " z=\""-{-# INLINE z #-}---- WARNING: The next block of code was automatically generated by--- Util/GenerateSvgCombinators.hs:222------ | Combinator for the @zoomAndPan@ attribute.----zoomandpan :: AttributeValue -- ^ Attribute value.- -> Attribute -- ^ Resulting attribute.-zoomandpan = attribute "zoomAndPan" " zoomAndPan=\""-{-# INLINE zoomandpan #-}
− Util/GenerateSvgCombinators.hs
@@ -1,329 +0,0 @@-{-# LANGUAGE CPP #-}--#define DO_NOT_EDIT (doNotEdit __FILE__ __LINE__)---- | Generates code for SVG tags.----module Util.GenerateSvgCombinators where--import Control.Arrow ((&&&))-import Data.List (sort, sortBy, intersperse, intercalate)-import Data.Ord (comparing)-import System.Directory (createDirectoryIfMissing)-import System.FilePath ((</>), (<.>))-import Data.Map (Map)-import qualified Data.Map as M-import Data.Char (toLower)-import qualified Data.Set as S--import Util.Sanitize (sanitize, prelude)---- | Datatype for an SVG variant.----data SvgVariant = SvgVariant- { version :: [String]- , docType :: [String]- , parents :: [String]- , leafs :: [String]- , attributes :: [String]- , selfClosing :: Bool- } deriving (Eq)--instance Show SvgVariant where- show = map toLower . intercalate "-" . version---- | Get the full module name for an SVG variant.----getModuleName :: SvgVariant -> String-getModuleName = ("Text.Blaze." ++) . intercalate "." . version---- | Get the attribute module name for an SVG variant.----getAttributeModuleName :: SvgVariant -> String-getAttributeModuleName = (++ ".Attributes") . getModuleName---- | Check if a given name causes a name clash.----isNameClash :: SvgVariant -> String -> Bool-isNameClash v t- -- Both an element and an attribute- | (t `elem` parents v || t `elem` leafs v) && t `elem` attributes v = True- -- Already a prelude function- | sanitize t `S.member` prelude = True- | otherwise = False---- | Write an SVG variant.----writeSvgVariant :: SvgVariant -> IO ()-writeSvgVariant svgVariant = do- -- Make a directory.- createDirectoryIfMissing True basePath-- let tags = zip parents' (repeat makeParent)- ++ zip leafs' (repeat (makeLeaf $ selfClosing svgVariant))- sortedTags = sortBy (comparing fst) tags- appliedTags = map (\(x, f) -> f x) sortedTags-- -- Write the main module.- writeFile' (basePath <.> "hs") $ removeTrailingNewlines $ unlines- [ DO_NOT_EDIT- , "{-# LANGUAGE OverloadedStrings #-}"- , "-- | This module exports SVG combinators used to create documents."- , "--"- , exportList modulName $ "module Text.Blaze"- : "module Text.Blaze.Svg"- : "docType"- : "docTypeSvg"- : map (sanitize . fst) sortedTags- , DO_NOT_EDIT- , "import Prelude ((>>), (.), ($))"- , ""- , "import Text.Blaze"- , "import Text.Blaze.Svg"- , "import Text.Blaze.Internal"- , ""- , makeDocType $ docType svgVariant- , makeDocTypeSvg $ docType svgVariant- , unlines appliedTags- ]-- let sortedAttributes = sort attributes'-- -- Write the attribute module.- writeFile' (basePath </> "Attributes.hs") $ removeTrailingNewlines $ unlines- [ DO_NOT_EDIT- , "-- | This module exports combinators that provide you with the"- , "-- ability to set attributes on SVG elements."- , "--"- , "{-# LANGUAGE OverloadedStrings #-}"- , exportList attributeModuleName $ map sanitize sortedAttributes- , DO_NOT_EDIT- , "import Prelude ()"- , ""- , "import Text.Blaze.Internal (Attribute, AttributeValue, attribute)"- , ""- , unlines (map makeAttribute sortedAttributes)- ]- where- basePath = "Text" </> "Blaze" </> foldl1 (</>) version'- modulName = getModuleName svgVariant- attributeModuleName = getAttributeModuleName svgVariant- attributes' = attributes svgVariant- parents' = parents svgVariant- leafs' = leafs svgVariant- version' = version svgVariant- removeTrailingNewlines = reverse . drop 2 . reverse- writeFile' file content = do- putStrLn ("Generating " ++ file)- writeFile file content---- | Create a string, consisting of @x@ spaces, where @x@ is the length of the--- argument.----spaces :: String -> String-spaces = flip replicate ' ' . length---- | Join blocks of code with a newline in between.----unblocks :: [String] -> String-unblocks = unlines . intersperse "\n"---- | A warning to not edit the generated code.----doNotEdit :: FilePath -> Int -> String-doNotEdit fileName lineNumber = init $ unlines- [ "-- WARNING: The next block of code was automatically generated by"- , "-- " ++ fileName ++ ":" ++ show lineNumber- , "--"- ]---- | Generate an export list for a Haskell module.----exportList :: String -- ^ Module name.- -> [String] -- ^ List of functions.- -> String -- ^ Resulting string.-exportList _ [] = error "exportList without functions."-exportList name (f:functions) = unlines $- [ "module " ++ name- , " ( " ++ f- ] ++- map (" , " ++) functions ++- [ " ) where"]---- | Generate a function for a doctype.----makeDocType :: [String] -> String-makeDocType lines' = unlines- [ DO_NOT_EDIT- , "-- | Combinator for the document type. This should be placed at the top"- , "-- of every SVG page."- , "--"- , unlines (map ("-- > " ++) lines') ++ "--"- , "docType :: Svg -- ^ The document type SVG."- , "docType = preEscapedText " ++ show (unlines lines')- , "{-# INLINE docType #-}"- ]---- | Generate a function for the SVG tag (including the doctype).----makeDocTypeSvg :: [String] -- ^ The doctype.- -> String -- ^ Resulting combinator function.-makeDocTypeSvg lines' = unlines- [ DO_NOT_EDIT- , "-- | Combinator for the @\\<svg>@ element. This combinator will also"- , "-- insert the correct doctype."- , "--"- , unlines (map ("-- > " ++) lines') ++ "-- > <svg><span>foo</span></svg>"- , "--"- , "docTypeSvg :: Svg -- ^ Inner SVG."- , " -> Svg -- ^ Resulting SVG."- , "docTypeSvg inner = docType >> (svg ! attribute \"xmlns\" \" xmlns=\\\"\" \"http://www.w3.org/2000/svg\" ! attribute \"xmlns:xlink\" \" xmlns:xlink=\\\"\" \"http://www.w3.org/1999/xlink\" $ inner)"- , "{-# INLINE docTypeSvg #-}"- ]---- | Generate a function for an SVG tag that can be a parent.----makeParent :: String -> String-makeParent tag = unlines- [ DO_NOT_EDIT- , "-- | Combinator for the @\\<" ++ tag ++ ">@ element."- , "--"- , function ++ " :: Svg -- ^ Inner SVG."- , spaces function ++ " -> Svg -- ^ Resulting SVG."- , function ++ " = Parent \"" ++ tag ++ "\" \"<" ++ tag- ++ "\" \"</" ++ tag ++ ">\"" ++ modifier- , "{-# INLINE " ++ function ++ " #-}"- ]- where- function = sanitize tag- modifier = if tag `elem` ["style", "script"] then " . external" else ""---- | Generate a function for an SVG tag that must be a leaf.----makeLeaf :: Bool -- ^ Make leaf tags self-closing- -> String -- ^ Tag for the combinator- -> String -- ^ Combinator code-makeLeaf closing tag = unlines- [ DO_NOT_EDIT- , "-- | Combinator for the @\\<" ++ tag ++ " />@ element."- , "--"- , function ++ " :: Svg -- ^ Resulting SVG."- , function ++ " = Leaf \"" ++ tag ++ "\" \"<" ++ tag ++ "\" " ++ "\""- ++ (if closing then " /" else "") ++ ">\""- , "{-# INLINE " ++ function ++ " #-}"- ]- where- function = sanitize tag---- | Generate a function for an SVG attribute.----makeAttribute :: String -> String-makeAttribute name = unlines- [ DO_NOT_EDIT- , "-- | Combinator for the @" ++ name ++ "@ attribute."- , "--"- , function ++ " :: AttributeValue -- ^ Attribute value."- , spaces function ++ " -> Attribute -- ^ Resulting attribute."- , function ++ " = attribute \"" ++ name ++ "\" \" "- ++ name ++ "=\\\"\""- , "{-# INLINE " ++ function ++ " #-}"- ]- where- function = sanitize name---- | SVG 1.1--- Reference: https://developer.mozilla.org/en/SVG----svg11 :: SvgVariant-svg11 = SvgVariant- { version = ["Svg11"]- , docType =- [ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"- , "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\""- , " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">"- ]- , parents =- [ "a","defs","glyph","g","marker","mask","missing-glyph","pattern", "svg"- , "switch", "symbol", "linearGradient", "radialGradient"- ]- , leafs =- [ "altGlyph", "altGlyphDef", "altGlyphItem", "animate", "animateColor"- , "animateMotion", "animateTransform", "circle", "clipPath"- , "color-profile" , "cursor", "desc", "ellipse", "feBlend"- , "feColorMatrix", "feComponentTransfer" , "feComposite"- , "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap"- , "feDistantLight", "feFlood", "feFuncA", "feFuncB" , "feFuncG"- , "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode"- , "feMorphology", "feOffset", "fePointLight", "feSpecularLighting"- , "feSpotLight" , "feTile", "feTurbulence", "filter", "font"- , "font-face", "font-face-format" , "font-face-name", "font-face-src"- , "font-face-uri", "foreignObject" , "glyphRef", "hkern", "image"- , "line", "metadata", "mpath", "path"- , "polygon" , "polyline", "rect", "script", "set"- , "stop", "style" , "text", "textPath", "title", "tref", "tspan", "use"- , "view", "vkern"- ]- , attributes =- [ "accent-height", "accumulate", "additive", "alphabetic", "amplitude"- , "arabic-form", "ascent", "attributeName", "attributeType", "azimuth"- , "baseFrequency", "baseProfile", "bbox", "begin", "bias", "by", "calcMode"- , "cap-height", "class", "clipPathUnits", "contentScriptType"- , "contentStyleType", "cx", "cy", "d", "descent", "diffuseConstant", "divisor"- , "dur", "dx", "dy", "edgeMode", "elevation", "end", "exponent"- , "externalResourcesRequired", "fill", "filterRes", "filterUnits", "font-family"- , "font-size", "font-stretch", "font-style", "font-variant", "font-weight"- , "format", "from", "fx", "fy", "g1", "g2", "glyph-name", "glyphRef"- , "gradientTransform", "gradientUnits", "hanging", "height", "horiz-adv-x"- , "horiz-origin-x", "horiz-origin-y", "id", "ideographic", "in", "in2"- , "intercept", "k", "k1", "k2", "k3", "k4", "kernelMatrix", "kernelUnitLength"- , "keyPoints", "keySplines", "keyTimes", "lang", "lengthAdjust"- , "limitingConeAngle", "local", "markerHeight", "markerUnits", "markerWidth"- , "maskContentUnits", "maskUnits", "mathematical", "max", "media", "method"- , "min", "mode", "name", "numOctaves", "offset", "onabort", "onactivate"- , "onbegin", "onclick", "onend", "onerror", "onfocusin", "onfocusout", "onload"- , "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup"- , "onrepeat", "onresize", "onscroll", "onunload", "onzoom", "operator", "order"- , "orient", "orientation", "origin", "overline-position", "overline-thickness"- , "panose-1", "path", "pathLength", "patternContentUnits", "patternTransform"- , "patternUnits", "points", "pointsAtX", "pointsAtY", "pointsAtZ"- , "preserveAlpha", "preserveAspectRatio", "primitiveUnits", "r", "radius"- , "refX", "refY", "rendering-intent", "repeatCount", "repeatDur"- , "requiredExtensions", "requiredFeatures", "restart", "result", "rotate", "rx"- , "ry", "scale", "seed", "slope", "spacing", "specularConstant"- , "specularExponent", "spreadMethod", "startOffset", "stdDeviation", "stemh"- , "stemv", "stitchTiles", "strikethrough-position", "strikethrough-thickness"- , "string", "style", "surfaceScale", "systemLanguage", "tableValues", "target"- , "targetX", "targetY", "textLength", "title", "to", "transform", "type", "u1"- , "u2", "underline-position", "underline-thickness", "unicode", "unicode-range"- , "units-per-em", "v-alphabetic", "v-hanging", "v-ideographic", "v-mathematical"- , "values", "version", "vert-adv-y", "vert-origin-x", "vert-origin-y", "viewBox"- , "viewTarget", "width", "widths", "x", "x-height", "x1", "x2"- , "xChannelSelector", "xlink:actuate", "xlink:arcrole", "xlink:href"- , "xlink:role", "xlink:show", "xlink:title", "xlink:type", "xml:base"- , "xml:lang", "xml:space", "y", "y1", "y2", "yChannelSelector", "z", "zoomAndPan"- -- Presentation Attributes- , "alignment-baseline", "baseline-shift", "clip-path", "clip-rule"- , "clip", "color-interpolation-filters", "color-interpolation"- , "color-profile", "color-rendering", "color", "cursor", "direction"- , "display", "dominant-baseline", "enable-background", "fill-opacity"- , "fill-rule", "filter", "flood-color", "flood-opacity"- , "font-size-adjust", "glyph-orientation-horizontal"- , "glyph-orientation-vertical", "image-rendering", "kerning", "letter-spacing"- , "lighting-color", "marker-end", "marker-mid", "marker-start", "mask"- , "opacity", "overflow", "pointer-events", "shape-rendering", "stop-color"- , "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap"- , "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width"- , "stroke", "text-anchor", "text-decoration", "text-rendering", "unicode-bidi"- , "visibility", "word-spacing", "writing-mode"- ]- , selfClosing = True- }---- | A map of SVG variants, per version, lowercase.----svgVariants :: Map String SvgVariant-svgVariants = M.fromList $ map (show &&& id)- [ svg11 ]--main :: IO ()-main = mapM_ (writeSvgVariant . snd) $ M.toList svgVariants
− Util/Sanitize.hs
@@ -1,78 +0,0 @@--- | A program to sanitize an HTML tag to a Haskell function.----module Util.Sanitize- ( sanitize- , keywords- , prelude- ) where--import Data.Char (toLower, toUpper)-import Data.Set (Set)-import qualified Data.Set as S---- | Sanitize a tag. This function returns a name that can be used as--- combinator in haskell source code.------ Examples:------ > sanitize "class" == "class_"--- > sanitize "http-equiv" == "httpEquiv"----sanitize :: String -> String-sanitize = appendUnderscore . removeDashOrColon . map toLower- where- -- Remove a dash, replacing it by camelcase notation- --- -- Example:- --- -- > removeDashOrColon "foo-bar" == "fooBar"- --- removeDashOrColon ('-' : x : xs) = toUpper x : removeDashOrColon xs- removeDashOrColon (':' : x : xs) = toUpper x : removeDashOrColon xs- removeDashOrColon (x : xs) = x : removeDashOrColon xs- removeDashOrColon [] = []-- appendUnderscore t | t `S.member` keywords = t ++ "_"- | t `S.member` prelude = t ++ "_"- | otherwise = t---- | A set of standard Haskell keywords, which cannot be used as combinators.----keywords :: Set String-keywords = S.fromList- [ "case", "class", "data", "default", "deriving", "do", "else", "if"- , "import", "in", "infix", "infixl", "infixr", "instance" , "let", "module"- , "newtype", "of", "then", "type", "where"- ]---- | Set of functions from the Prelude, which we do not use as combinators.----prelude :: Set String-prelude = S.fromList- [ "abs", "acos", "acosh", "all", "and", "any", "appendFile", "asTypeOf"- , "asin", "asinh", "atan", "atan2", "atanh", "break", "catch", "ceiling"- , "compare", "concat", "concatMap", "const", "cos", "cosh", "curry", "cycle"- , "decodeFloat", "div", "divMod", "drop", "dropWhile", "either", "elem"- , "encodeFloat", "enumFrom", "enumFromThen", "enumFromThenTo", "enumFromTo"- , "error", "even", "exp", "exponent", "fail", "filter", "flip"- , "floatDigits", "floatRadix", "floatRange", "floor", "fmap", "foldl"- , "foldl1", "foldr", "foldr1", "fromEnum", "fromInteger", "fromIntegral"- , "fromRational", "fst", "gcd", "getChar", "getContents", "getLine", "head"- , "id", "init", "interact", "ioError", "isDenormalized", "isIEEE"- , "isInfinite", "isNaN", "isNegativeZero", "iterate", "last", "lcm"- , "length", "lex", "lines", "log", "logBase", "lookup", "map", "mapM"- , "mapM_", "max", "maxBound", "maximum", "maybe", "min", "minBound"- , "minimum", "mod", "negate", "not", "notElem", "null", "odd", "or"- , "otherwise", "pi", "pred", "print", "product", "properFraction", "putChar"- , "putStr", "putStrLn", "quot", "quotRem", "read", "readFile", "readIO"- , "readList", "readLn", "readParen", "reads", "readsPrec", "realToFrac"- , "recip", "rem", "repeat", "replicate", "return", "reverse", "round"- , "scaleFloat", "scanl", "scanl1", "scanr", "scanr1", "seq", "sequence"- , "sequence_", "show", "showChar", "showList", "showParen", "showString"- , "shows", "showsPrec", "significand", "signum", "sin", "sinh", "snd"- , "span", "splitAt", "sqrt", "subtract", "succ", "sum", "tail", "take"- , "takeWhile", "tan", "tanh", "toEnum", "toInteger", "toRational"- , "truncate", "text", "uncurry", "undefined", "unlines", "until", "unwords", "unzip"- , "unzip3", "userError", "words", "writeFile", "zip", "zip3", "zipWith"- , "zipWith3"- ]
blaze-svg.cabal view
@@ -1,7 +1,6 @@ name: blaze-svg-version: 0.3.0.0+version: 0.3.0.1 synopsis: SVG combinator library-description: SVG combinator library homepage: https://github.com/deepakjois/blaze-svg license: BSD3 license-file: LICENSE@@ -9,13 +8,29 @@ maintainer: deepak.jois@gmail.com category: Graphics build-type: Simple-cabal-version: >=1.6+cabal-version: >=1.8+description:+ A blazingly fast SVG combinator library for the Haskell+ programming language. The "Text.Blaze.SVG" module is a good+ starting point.+ .+ Other documentation:+ .+ * Programs in the /examples/ folder of this project: <https://github.com/deepakjois/blaze-svg/tree/master/examples/>+ .+ * Jasper Van Der Jeugt has written tutorial below is for /blaze-html/,+ which is a sister library of /blaze-svg/, but gives a good overview+ on how to use the combinators in "Text.Blaze.Svg11" and+ "Text.Blaze.Svg11.Attributes":+ <http://jaspervdj.be/blaze/tutorial.html>. Extra-source-files:- Util/Sanitize.hs- Util/GenerateSvgCombinators.hs+ src/Util/Sanitize.hs+ src/Util/GenerateSvgCombinators.hs+ examples/*.hs Library+ Hs-Source-Dirs: src Ghc-Options: -Wall Exposed-modules:@@ -28,12 +43,10 @@ Text.Blaze.Svg.Renderer.Text Text.Blaze.Svg.Renderer.Utf8 - Build-depends: base >= 4 && < 5, mtl >= 2 && < 3, blaze-markup >= 0.5 && < 0.6- Source-repository head Type: git
+ examples/Example.hs view
@@ -0,0 +1,26 @@+{-# LANGUAGE OverloadedStrings #-}+import Text.Blaze.Svg11 ((!), mkPath, rotate, l, m)+import qualified Text.Blaze.Svg11 as S+import qualified Text.Blaze.Svg11.Attributes as A+import Text.Blaze.Svg.Renderer.String (renderSvg)++main :: IO ()+main = do+ let a = renderSvg svgDoc+ putStrLn a++svgDoc :: S.Svg+svgDoc = S.docTypeSvg ! A.version "1.1" ! A.width "150" ! A.height "100" ! A.viewbox "0 0 3 2" $ do+ S.g ! A.transform makeTransform $ do+ S.rect ! A.width "1" ! A.height "2" ! A.fill "#008d46"+ S.rect ! A.width "1" ! A.height "2" ! A.fill "#ffffff"+ S.rect ! A.width "1" ! A.height "2" ! A.fill "#d2232c"+ S.path ! A.d makePath++makePath :: S.AttributeValue+makePath = mkPath $ do+ l 2 3+ m 4 5++makeTransform :: S.AttributeValue+makeTransform = rotate 50
+ src/Text/Blaze/Svg.hs view
@@ -0,0 +1,24 @@+{-# LANGUAGE OverloadedStrings #-}+module Text.Blaze.Svg+ (+ Svg+ , Path+ -- * SVG Path combinators+ , mkPath+ -- ** \"moveto\" commands+ , m, mr+ -- ** \"closepath\" command+ , z+ -- ** \"lineto\" commands+ , l, lr, h, hr, v, vr+ -- ** The cubic Bézier curve commands + , c, cr, s, sr+ -- ** The quadratic Bézier curve commands+ , q, qr, t, tr+ -- * SVG Transform combinators+ , translate, rotate, scale+ , skewX, skewY+ , matrix+ ) where++import Text.Blaze.Svg.Internal
+ src/Text/Blaze/Svg/Internal.hs view
@@ -0,0 +1,249 @@+{-# OPTIONS_HADDOCK hide #-}+module Text.Blaze.Svg.Internal where++import Control.Monad.State+import Data.Monoid (mappend, mempty)++import Text.Blaze++-- | Type to represent an SVG document fragment.+type Svg = Markup++-- | Type to accumulate an SVG path.+type Path = State AttributeValue ()++-- | Construct SVG path values using path instruction combinators.+-- See simple example below of how you can use @mkPath@ to+-- specify a path using the path instruction combinators+-- that are included as part of the same module.+--+-- More information available at: <http://www.w3.org/TR/SVG/paths.html>+--+-- > import Text.Blaze.Svg11 ((!), mkPath, l, m)+-- > import qualified Text.Blaze.Svg11 as S+-- > import qualified Text.Blaze.Svg11.Attributes as A+-- >+-- > svgDoc :: S.Svg+-- > svgDoc = S.docTypeSvg ! A.version "1.1" ! A.width "150" ! A.height "100" $ do+-- > path ! d makeSimplePath+-- >+-- > makeSimplePath :: S.AttributeValue+-- > makeSimplePath = mkPath do+-- > l 2 3+-- > m 4 5+mkPath :: Path -> AttributeValue+mkPath path = snd $ runState path mempty++appendToPath :: [String] -> Path+appendToPath = modify . flip mappend . toValue . join++-- | Moveto+m :: Show a => a -> a -> Path+m x y = appendToPath+ [ "M "+ , show x, ",", show y+ , " "+ ]++-- | Moveto (relative)+mr :: Show a => a -> a -> Path+mr dx dy = appendToPath+ [ "m "+ , show dx, ",", show dy+ , " "+ ]++-- | ClosePath+z :: Path+z = modify (`mappend` toValue "Z")++-- | Lineto+l :: Show a => a -> a -> Path+l x y = appendToPath+ [ "L "+ , show x, ",", show y+ , " "+ ]++-- | Lineto (relative)+lr :: Show a => a -> a -> Path+lr dx dy = appendToPath+ [ "l "+ , show dx, ",", show dy+ , " "+ ]++-- | Horizontal lineto+h :: Show a => a -> Path+h x = appendToPath+ [ "H "+ , show x+ , " "+ ]++-- | Horizontal lineto (relative)+hr :: Show a => a -> Path+hr dx = appendToPath+ [ "h "+ , show dx+ , " "+ ]+++-- | Vertical lineto+v :: Show a => a -> Path+v y = appendToPath+ [ "V "+ , show y+ , " "+ ]++-- | Vertical lineto (relative)+vr :: Show a => a -> Path+vr dy = appendToPath+ [ "v "+ , show dy+ , " "+ ]++-- | Cubic Bezier curve+c :: Show a => a -> a -> a -> a -> a -> a -> Path+c c1x c1y c2x c2y x y = appendToPath+ [ "C "+ , show c1x, ",", show c1y+ , " "+ , show c2x, ",", show c2y+ , " "+ , show x, " ", show y+ ]++-- | Cubic Bezier curve (relative)+cr :: Show a => a -> a -> a -> a -> a -> a -> Path+cr dc1x dc1y dc2x dc2y dx dy = appendToPath+ [ "c "+ , show dc1x, ",", show dc1y+ , " "+ , show dc2x, ",", show dc2y+ , " "+ , show dx, " ", show dy+ ]++-- | Smooth Cubic Bezier curve+s :: Show a => a -> a -> a -> a -> Path+s c2x c2y x y = appendToPath+ [ "S "+ , show c2x, ",", show c2y+ , " "+ , show x, ",", show y+ , " "+ ]++-- | Smooth Cubic Bezier curve (relative)+sr :: Show a => a -> a -> a -> a -> Path+sr dc2x dc2y dx dy = appendToPath+ [ "s "+ , show dc2x, ",", show dc2y+ , " "+ , show dx, ",", show dy+ , " "+ ]++-- | Quadratic Bezier curve+q :: Show a => a -> a -> a -> a -> Path+q cx cy x y = appendToPath+ [ "Q "+ , show cx, ",", show cy+ , " "+ , show x, ",", show y+ , " "+ ]++-- | Quadratic Bezier curve (relative)+qr :: Show a => a -> a -> a -> a -> Path+qr dcx dcy dx dy = appendToPath+ [ "q "+ , show dcx, ",", show dcy+ , " "+ , show dx, ",", show dy+ , " "+ ]++-- | Smooth Quadratic Bezier curve+t :: Show a => a -> a -> Path+t x y = appendToPath+ [ "T "+ , " "+ , show x, ",", show y+ , " "+ ]++-- | Smooth Quadratic Bezier curve (relative)+tr :: Show a => a -> a -> Path+tr x y = appendToPath+ [ "t "+ , " "+ , show x, ",", show y+ , " "+ ]++-- | Specifies a translation by @x@ and @y@+translate :: Show a => a -> a -> AttributeValue+translate x y = toValue . join $+ [ "translate("+ , show x, " ", show y+ , ")"+ ]++-- | Specifies a scale operation by @x@ and @y@+scale :: Show a => a -> a -> AttributeValue+scale x y = toValue . join $+ [ "scale("+ , show x, " ", show y+ , ")"+ ]++-- | Specifies a rotation by @rotate-angle@ degrees+rotate :: Show a => a -> AttributeValue+rotate rotateAngle = toValue . join $+ [ "rotate("+ , show rotateAngle+ , ")"+ ]++-- | Specifies a rotation by @rotate-angle@ degrees about the given time @rx,ry@+rotateAround :: Show a => a -> a -> a -> AttributeValue+rotateAround rotateAngle rx ry = toValue . join $+ [ "rotate("+ , show rotateAngle, ","+ , show rx, ",", show ry+ , ")"+ ]++-- | Skew tansformation along x-axis+skewX :: Show a => a -> AttributeValue+skewX skewAngle = toValue . join $+ [ "skewX("+ , show skewAngle+ , ")"+ ]++-- | Skew tansformation along y-axis+skewY :: Show a => a -> AttributeValue+skewY skewAngle = toValue . join $+ [ "skewY("+ , show skewAngle+ , ")"+ ]++-- | Specifies a transform in the form of a transformation matrix+matrix :: Show a => a -> a -> a -> a -> a -> a -> AttributeValue+matrix a b c_ d e f = toValue . join $+ [ "matrix("+ , show a, ","+ , show b, ","+ , show c_, ","+ , show d, ","+ , show e, ","+ , show f+ , ")"+ ]
+ src/Text/Blaze/Svg/Renderer/Pretty.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}+-- | A renderer that produces pretty SVG, mostly meant for debugging purposes.+--+module Text.Blaze.Svg.Renderer.Pretty+ ( renderSvg+ ) where++import Text.Blaze.Renderer.Pretty (renderMarkup)++renderSvg = renderMarkup
+ src/Text/Blaze/Svg/Renderer/String.hs view
@@ -0,0 +1,11 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}+-- | A renderer that produces a native Haskell 'String', mostly meant for+-- debugging purposes.+--+module Text.Blaze.Svg.Renderer.String+ ( renderSvg+ ) where++import Text.Blaze.Renderer.String (renderMarkup)++renderSvg = renderMarkup
+ src/Text/Blaze/Svg/Renderer/Text.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}+-- | A renderer that produces a lazy 'Text' value, using the Text Builder.+--+module Text.Blaze.Svg.Renderer.Text+ ( renderSvg+ ) where++import Text.Blaze.Renderer.Text (renderMarkup)++renderSvg = renderMarkup
+ src/Text/Blaze/Svg/Renderer/Utf8.hs view
@@ -0,0 +1,8 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}+module Text.Blaze.Svg.Renderer.Utf8+ ( renderSvg+ ) where++import Text.Blaze.Renderer.Utf8 (renderMarkup)++renderSvg = renderMarkup
+ src/Text/Blaze/Svg11.hs view
@@ -0,0 +1,859 @@+-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:69+--+{-# LANGUAGE OverloadedStrings #-}+-- | This module exports SVG combinators used to create documents.+--+module Text.Blaze.Svg11+ ( module Text.Blaze+ , module Text.Blaze.Svg+ , docType+ , docTypeSvg+ , a+ , altglyph+ , altglyphdef+ , altglyphitem+ , animate+ , animatecolor+ , animatemotion+ , animatetransform+ , circle+ , clippath+ , colorProfile+ , cursor+ , defs+ , desc+ , ellipse+ , feblend+ , fecolormatrix+ , fecomponenttransfer+ , fecomposite+ , feconvolvematrix+ , fediffuselighting+ , fedisplacementmap+ , fedistantlight+ , feflood+ , fefunca+ , fefuncb+ , fefuncg+ , fefuncr+ , fegaussianblur+ , feimage+ , femerge+ , femergenode+ , femorphology+ , feoffset+ , fepointlight+ , fespecularlighting+ , fespotlight+ , fetile+ , feturbulence+ , filter_+ , font+ , fontFace+ , fontFaceFormat+ , fontFaceName+ , fontFaceSrc+ , fontFaceUri+ , foreignobject+ , g+ , glyph+ , glyphref+ , hkern+ , image+ , line+ , lineargradient+ , marker+ , mask+ , metadata+ , missingGlyph+ , mpath+ , path+ , pattern+ , polygon+ , polyline+ , radialgradient+ , rect+ , script+ , set+ , stop+ , style+ , svg+ , switch+ , symbol+ , text_+ , textpath+ , title+ , tref+ , tspan+ , use+ , view+ , vkern+ ) where++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:78+--+import Prelude ((>>), (.), ($))++import Text.Blaze+import Text.Blaze.Svg+import Text.Blaze.Internal++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:157+--+-- | Combinator for the document type. This should be placed at the top+-- of every SVG page.+--+-- > <?xml version="1.0" encoding="UTF-8"?>+-- > <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"+-- > "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">+--+docType :: Svg -- ^ The document type SVG.+docType = preEscapedText "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n"+{-# INLINE docType #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:172+--+-- | Combinator for the @\<svg>@ element. This combinator will also+-- insert the correct doctype.+--+docTypeSvg :: Svg -- ^ Inner SVG.+ -> Svg -- ^ Resulting SVG.+docTypeSvg inner = docType >> (svg ! attribute "xmlns" " xmlns=\"" "http://www.w3.org/2000/svg" ! attribute "xmlns:xlink" " xmlns:xlink=\"" "http://www.w3.org/1999/xlink" $ inner)+{-# INLINE docTypeSvg #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:186+--+-- | Combinator for the @\<a>@ element.+--+a :: Svg -- ^ Inner SVG.+ -> Svg -- ^ Resulting SVG.+a = Parent "a" "<a" "</a>"+{-# INLINE a #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<altGlyph />@ element.+--+altglyph :: Svg -- ^ Resulting SVG.+altglyph = Leaf "altGlyph" "<altGlyph" " />"+{-# INLINE altglyph #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<altGlyphDef />@ element.+--+altglyphdef :: Svg -- ^ Resulting SVG.+altglyphdef = Leaf "altGlyphDef" "<altGlyphDef" " />"+{-# INLINE altglyphdef #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<altGlyphItem />@ element.+--+altglyphitem :: Svg -- ^ Resulting SVG.+altglyphitem = Leaf "altGlyphItem" "<altGlyphItem" " />"+{-# INLINE altglyphitem #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<animate />@ element.+--+animate :: Svg -- ^ Resulting SVG.+animate = Leaf "animate" "<animate" " />"+{-# INLINE animate #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<animateColor />@ element.+--+animatecolor :: Svg -- ^ Resulting SVG.+animatecolor = Leaf "animateColor" "<animateColor" " />"+{-# INLINE animatecolor #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<animateMotion />@ element.+--+animatemotion :: Svg -- ^ Resulting SVG.+animatemotion = Leaf "animateMotion" "<animateMotion" " />"+{-# INLINE animatemotion #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<animateTransform />@ element.+--+animatetransform :: Svg -- ^ Resulting SVG.+animatetransform = Leaf "animateTransform" "<animateTransform" " />"+{-# INLINE animatetransform #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<circle />@ element.+--+circle :: Svg -- ^ Resulting SVG.+circle = Leaf "circle" "<circle" " />"+{-# INLINE circle #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<clipPath />@ element.+--+clippath :: Svg -- ^ Resulting SVG.+clippath = Leaf "clipPath" "<clipPath" " />"+{-# INLINE clippath #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<color-profile />@ element.+--+colorProfile :: Svg -- ^ Resulting SVG.+colorProfile = Leaf "color-profile" "<color-profile" " />"+{-# INLINE colorProfile #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<cursor />@ element.+--+cursor :: Svg -- ^ Resulting SVG.+cursor = Leaf "cursor" "<cursor" " />"+{-# INLINE cursor #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:186+--+-- | Combinator for the @\<defs>@ element.+--+defs :: Svg -- ^ Inner SVG.+ -> Svg -- ^ Resulting SVG.+defs = Parent "defs" "<defs" "</defs>"+{-# INLINE defs #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<desc />@ element.+--+desc :: Svg -- ^ Resulting SVG.+desc = Leaf "desc" "<desc" " />"+{-# INLINE desc #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<ellipse />@ element.+--+ellipse :: Svg -- ^ Resulting SVG.+ellipse = Leaf "ellipse" "<ellipse" " />"+{-# INLINE ellipse #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feBlend />@ element.+--+feblend :: Svg -- ^ Resulting SVG.+feblend = Leaf "feBlend" "<feBlend" " />"+{-# INLINE feblend #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feColorMatrix />@ element.+--+fecolormatrix :: Svg -- ^ Resulting SVG.+fecolormatrix = Leaf "feColorMatrix" "<feColorMatrix" " />"+{-# INLINE fecolormatrix #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feComponentTransfer />@ element.+--+fecomponenttransfer :: Svg -- ^ Resulting SVG.+fecomponenttransfer = Leaf "feComponentTransfer" "<feComponentTransfer" " />"+{-# INLINE fecomponenttransfer #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feComposite />@ element.+--+fecomposite :: Svg -- ^ Resulting SVG.+fecomposite = Leaf "feComposite" "<feComposite" " />"+{-# INLINE fecomposite #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feConvolveMatrix />@ element.+--+feconvolvematrix :: Svg -- ^ Resulting SVG.+feconvolvematrix = Leaf "feConvolveMatrix" "<feConvolveMatrix" " />"+{-# INLINE feconvolvematrix #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feDiffuseLighting />@ element.+--+fediffuselighting :: Svg -- ^ Resulting SVG.+fediffuselighting = Leaf "feDiffuseLighting" "<feDiffuseLighting" " />"+{-# INLINE fediffuselighting #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feDisplacementMap />@ element.+--+fedisplacementmap :: Svg -- ^ Resulting SVG.+fedisplacementmap = Leaf "feDisplacementMap" "<feDisplacementMap" " />"+{-# INLINE fedisplacementmap #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feDistantLight />@ element.+--+fedistantlight :: Svg -- ^ Resulting SVG.+fedistantlight = Leaf "feDistantLight" "<feDistantLight" " />"+{-# INLINE fedistantlight #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feFlood />@ element.+--+feflood :: Svg -- ^ Resulting SVG.+feflood = Leaf "feFlood" "<feFlood" " />"+{-# INLINE feflood #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feFuncA />@ element.+--+fefunca :: Svg -- ^ Resulting SVG.+fefunca = Leaf "feFuncA" "<feFuncA" " />"+{-# INLINE fefunca #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feFuncB />@ element.+--+fefuncb :: Svg -- ^ Resulting SVG.+fefuncb = Leaf "feFuncB" "<feFuncB" " />"+{-# INLINE fefuncb #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feFuncG />@ element.+--+fefuncg :: Svg -- ^ Resulting SVG.+fefuncg = Leaf "feFuncG" "<feFuncG" " />"+{-# INLINE fefuncg #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feFuncR />@ element.+--+fefuncr :: Svg -- ^ Resulting SVG.+fefuncr = Leaf "feFuncR" "<feFuncR" " />"+{-# INLINE fefuncr #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feGaussianBlur />@ element.+--+fegaussianblur :: Svg -- ^ Resulting SVG.+fegaussianblur = Leaf "feGaussianBlur" "<feGaussianBlur" " />"+{-# INLINE fegaussianblur #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feImage />@ element.+--+feimage :: Svg -- ^ Resulting SVG.+feimage = Leaf "feImage" "<feImage" " />"+{-# INLINE feimage #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feMerge />@ element.+--+femerge :: Svg -- ^ Resulting SVG.+femerge = Leaf "feMerge" "<feMerge" " />"+{-# INLINE femerge #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feMergeNode />@ element.+--+femergenode :: Svg -- ^ Resulting SVG.+femergenode = Leaf "feMergeNode" "<feMergeNode" " />"+{-# INLINE femergenode #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feMorphology />@ element.+--+femorphology :: Svg -- ^ Resulting SVG.+femorphology = Leaf "feMorphology" "<feMorphology" " />"+{-# INLINE femorphology #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feOffset />@ element.+--+feoffset :: Svg -- ^ Resulting SVG.+feoffset = Leaf "feOffset" "<feOffset" " />"+{-# INLINE feoffset #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<fePointLight />@ element.+--+fepointlight :: Svg -- ^ Resulting SVG.+fepointlight = Leaf "fePointLight" "<fePointLight" " />"+{-# INLINE fepointlight #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feSpecularLighting />@ element.+--+fespecularlighting :: Svg -- ^ Resulting SVG.+fespecularlighting = Leaf "feSpecularLighting" "<feSpecularLighting" " />"+{-# INLINE fespecularlighting #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feSpotLight />@ element.+--+fespotlight :: Svg -- ^ Resulting SVG.+fespotlight = Leaf "feSpotLight" "<feSpotLight" " />"+{-# INLINE fespotlight #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feTile />@ element.+--+fetile :: Svg -- ^ Resulting SVG.+fetile = Leaf "feTile" "<feTile" " />"+{-# INLINE fetile #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<feTurbulence />@ element.+--+feturbulence :: Svg -- ^ Resulting SVG.+feturbulence = Leaf "feTurbulence" "<feTurbulence" " />"+{-# INLINE feturbulence #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<filter />@ element.+--+filter_ :: Svg -- ^ Resulting SVG.+filter_ = Leaf "filter" "<filter" " />"+{-# INLINE filter_ #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<font />@ element.+--+font :: Svg -- ^ Resulting SVG.+font = Leaf "font" "<font" " />"+{-# INLINE font #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<font-face />@ element.+--+fontFace :: Svg -- ^ Resulting SVG.+fontFace = Leaf "font-face" "<font-face" " />"+{-# INLINE fontFace #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<font-face-format />@ element.+--+fontFaceFormat :: Svg -- ^ Resulting SVG.+fontFaceFormat = Leaf "font-face-format" "<font-face-format" " />"+{-# INLINE fontFaceFormat #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<font-face-name />@ element.+--+fontFaceName :: Svg -- ^ Resulting SVG.+fontFaceName = Leaf "font-face-name" "<font-face-name" " />"+{-# INLINE fontFaceName #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<font-face-src />@ element.+--+fontFaceSrc :: Svg -- ^ Resulting SVG.+fontFaceSrc = Leaf "font-face-src" "<font-face-src" " />"+{-# INLINE fontFaceSrc #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<font-face-uri />@ element.+--+fontFaceUri :: Svg -- ^ Resulting SVG.+fontFaceUri = Leaf "font-face-uri" "<font-face-uri" " />"+{-# INLINE fontFaceUri #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<foreignObject />@ element.+--+foreignobject :: Svg -- ^ Resulting SVG.+foreignobject = Leaf "foreignObject" "<foreignObject" " />"+{-# INLINE foreignobject #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:186+--+-- | Combinator for the @\<g>@ element.+--+g :: Svg -- ^ Inner SVG.+ -> Svg -- ^ Resulting SVG.+g = Parent "g" "<g" "</g>"+{-# INLINE g #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:186+--+-- | Combinator for the @\<glyph>@ element.+--+glyph :: Svg -- ^ Inner SVG.+ -> Svg -- ^ Resulting SVG.+glyph = Parent "glyph" "<glyph" "</glyph>"+{-# INLINE glyph #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<glyphRef />@ element.+--+glyphref :: Svg -- ^ Resulting SVG.+glyphref = Leaf "glyphRef" "<glyphRef" " />"+{-# INLINE glyphref #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<hkern />@ element.+--+hkern :: Svg -- ^ Resulting SVG.+hkern = Leaf "hkern" "<hkern" " />"+{-# INLINE hkern #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<image />@ element.+--+image :: Svg -- ^ Resulting SVG.+image = Leaf "image" "<image" " />"+{-# INLINE image #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<line />@ element.+--+line :: Svg -- ^ Resulting SVG.+line = Leaf "line" "<line" " />"+{-# INLINE line #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:186+--+-- | Combinator for the @\<linearGradient>@ element.+--+lineargradient :: Svg -- ^ Inner SVG.+ -> Svg -- ^ Resulting SVG.+lineargradient = Parent "linearGradient" "<linearGradient" "</linearGradient>"+{-# INLINE lineargradient #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:186+--+-- | Combinator for the @\<marker>@ element.+--+marker :: Svg -- ^ Inner SVG.+ -> Svg -- ^ Resulting SVG.+marker = Parent "marker" "<marker" "</marker>"+{-# INLINE marker #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:186+--+-- | Combinator for the @\<mask>@ element.+--+mask :: Svg -- ^ Inner SVG.+ -> Svg -- ^ Resulting SVG.+mask = Parent "mask" "<mask" "</mask>"+{-# INLINE mask #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<metadata />@ element.+--+metadata :: Svg -- ^ Resulting SVG.+metadata = Leaf "metadata" "<metadata" " />"+{-# INLINE metadata #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:186+--+-- | Combinator for the @\<missing-glyph>@ element.+--+missingGlyph :: Svg -- ^ Inner SVG.+ -> Svg -- ^ Resulting SVG.+missingGlyph = Parent "missing-glyph" "<missing-glyph" "</missing-glyph>"+{-# INLINE missingGlyph #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<mpath />@ element.+--+mpath :: Svg -- ^ Resulting SVG.+mpath = Leaf "mpath" "<mpath" " />"+{-# INLINE mpath #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<path />@ element.+--+path :: Svg -- ^ Resulting SVG.+path = Leaf "path" "<path" " />"+{-# INLINE path #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:186+--+-- | Combinator for the @\<pattern>@ element.+--+pattern :: Svg -- ^ Inner SVG.+ -> Svg -- ^ Resulting SVG.+pattern = Parent "pattern" "<pattern" "</pattern>"+{-# INLINE pattern #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<polygon />@ element.+--+polygon :: Svg -- ^ Resulting SVG.+polygon = Leaf "polygon" "<polygon" " />"+{-# INLINE polygon #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<polyline />@ element.+--+polyline :: Svg -- ^ Resulting SVG.+polyline = Leaf "polyline" "<polyline" " />"+{-# INLINE polyline #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:186+--+-- | Combinator for the @\<radialGradient>@ element.+--+radialgradient :: Svg -- ^ Inner SVG.+ -> Svg -- ^ Resulting SVG.+radialgradient = Parent "radialGradient" "<radialGradient" "</radialGradient>"+{-# INLINE radialgradient #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<rect />@ element.+--+rect :: Svg -- ^ Resulting SVG.+rect = Leaf "rect" "<rect" " />"+{-# INLINE rect #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<script />@ element.+--+script :: Svg -- ^ Resulting SVG.+script = Leaf "script" "<script" " />"+{-# INLINE script #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<set />@ element.+--+set :: Svg -- ^ Resulting SVG.+set = Leaf "set" "<set" " />"+{-# INLINE set #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<stop />@ element.+--+stop :: Svg -- ^ Resulting SVG.+stop = Leaf "stop" "<stop" " />"+{-# INLINE stop #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<style />@ element.+--+style :: Svg -- ^ Resulting SVG.+style = Leaf "style" "<style" " />"+{-# INLINE style #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:186+--+-- | Combinator for the @\<svg>@ element.+--+svg :: Svg -- ^ Inner SVG.+ -> Svg -- ^ Resulting SVG.+svg = Parent "svg" "<svg" "</svg>"+{-# INLINE svg #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:186+--+-- | Combinator for the @\<switch>@ element.+--+switch :: Svg -- ^ Inner SVG.+ -> Svg -- ^ Resulting SVG.+switch = Parent "switch" "<switch" "</switch>"+{-# INLINE switch #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:186+--+-- | Combinator for the @\<symbol>@ element.+--+symbol :: Svg -- ^ Inner SVG.+ -> Svg -- ^ Resulting SVG.+symbol = Parent "symbol" "<symbol" "</symbol>"+{-# INLINE symbol #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<text />@ element.+--+text_ :: Svg -- ^ Resulting SVG.+text_ = Leaf "text" "<text" " />"+{-# INLINE text_ #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<textPath />@ element.+--+textpath :: Svg -- ^ Resulting SVG.+textpath = Leaf "textPath" "<textPath" " />"+{-# INLINE textpath #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<title />@ element.+--+title :: Svg -- ^ Resulting SVG.+title = Leaf "title" "<title" " />"+{-# INLINE title #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<tref />@ element.+--+tref :: Svg -- ^ Resulting SVG.+tref = Leaf "tref" "<tref" " />"+{-# INLINE tref #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<tspan />@ element.+--+tspan :: Svg -- ^ Resulting SVG.+tspan = Leaf "tspan" "<tspan" " />"+{-# INLINE tspan #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<use />@ element.+--+use :: Svg -- ^ Resulting SVG.+use = Leaf "use" "<use" " />"+{-# INLINE use #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<view />@ element.+--+view :: Svg -- ^ Resulting SVG.+view = Leaf "view" "<view" " />"+{-# INLINE view #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:205+--+-- | Combinator for the @\<vkern />@ element.+--+vkern :: Svg -- ^ Resulting SVG.+vkern = Leaf "vkern" "<vkern" " />"+{-# INLINE vkern #-}
+ src/Text/Blaze/Svg11/Attributes.hs view
@@ -0,0 +1,2942 @@+-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:94+--+-- | This module exports combinators that provide you with the+-- ability to set attributes on SVG elements.+--+{-# LANGUAGE OverloadedStrings #-}+module Text.Blaze.Svg11.Attributes+ ( accentHeight+ , accumulate+ , additive+ , alignmentBaseline+ , alphabetic+ , amplitude+ , arabicForm+ , ascent+ , attributename+ , attributetype+ , azimuth+ , basefrequency+ , baseprofile+ , baselineShift+ , bbox+ , begin+ , bias+ , by+ , calcmode+ , capHeight+ , class_+ , clip+ , clipPath+ , clipRule+ , clippathunits+ , color+ , colorInterpolation+ , colorInterpolationFilters+ , colorProfile+ , colorRendering+ , contentscripttype+ , contentstyletype+ , cursor+ , cx+ , cy+ , d+ , descent+ , diffuseconstant+ , direction+ , display+ , divisor+ , dominantBaseline+ , dur+ , dx+ , dy+ , edgemode+ , elevation+ , enableBackground+ , end+ , exponent_+ , externalresourcesrequired+ , fill+ , fillOpacity+ , fillRule+ , filter_+ , filterres+ , filterunits+ , floodColor+ , floodOpacity+ , fontFamily+ , fontSize+ , fontSizeAdjust+ , fontStretch+ , fontStyle+ , fontVariant+ , fontWeight+ , format+ , from+ , fx+ , fy+ , g1+ , g2+ , glyphName+ , glyphOrientationHorizontal+ , glyphOrientationVertical+ , glyphref+ , gradienttransform+ , gradientunits+ , hanging+ , height+ , horizAdvX+ , horizOriginX+ , horizOriginY+ , id_+ , ideographic+ , imageRendering+ , in_+ , in2+ , intercept+ , k+ , k1+ , k2+ , k3+ , k4+ , kernelmatrix+ , kernelunitlength+ , kerning+ , keypoints+ , keysplines+ , keytimes+ , lang+ , lengthadjust+ , letterSpacing+ , lightingColor+ , limitingconeangle+ , local+ , markerEnd+ , markerMid+ , markerStart+ , markerheight+ , markerunits+ , markerwidth+ , mask+ , maskcontentunits+ , maskunits+ , mathematical+ , max_+ , media+ , method+ , min_+ , mode+ , name+ , numoctaves+ , offset+ , onabort+ , onactivate+ , onbegin+ , onclick+ , onend+ , onerror+ , onfocusin+ , onfocusout+ , onload+ , onmousedown+ , onmousemove+ , onmouseout+ , onmouseover+ , onmouseup+ , onrepeat+ , onresize+ , onscroll+ , onunload+ , onzoom+ , opacity+ , operator+ , order+ , orient+ , orientation+ , origin+ , overflow+ , overlinePosition+ , overlineThickness+ , panose1+ , path+ , pathlength+ , patterncontentunits+ , patterntransform+ , patternunits+ , pointerEvents+ , points+ , pointsatx+ , pointsaty+ , pointsatz+ , preservealpha+ , preserveaspectratio+ , primitiveunits+ , r+ , radius+ , refx+ , refy+ , renderingIntent+ , repeatcount+ , repeatdur+ , requiredextensions+ , requiredfeatures+ , restart+ , result+ , rotate+ , rx+ , ry+ , scale+ , seed+ , shapeRendering+ , slope+ , spacing+ , specularconstant+ , specularexponent+ , spreadmethod+ , startoffset+ , stddeviation+ , stemh+ , stemv+ , stitchtiles+ , stopColor+ , stopOpacity+ , strikethroughPosition+ , strikethroughThickness+ , string+ , stroke+ , strokeDasharray+ , strokeDashoffset+ , strokeLinecap+ , strokeLinejoin+ , strokeMiterlimit+ , strokeOpacity+ , strokeWidth+ , style+ , surfacescale+ , systemlanguage+ , tablevalues+ , target+ , targetx+ , targety+ , textAnchor+ , textDecoration+ , textRendering+ , textlength+ , title+ , to+ , transform+ , type_+ , u1+ , u2+ , underlinePosition+ , underlineThickness+ , unicode+ , unicodeBidi+ , unicodeRange+ , unitsPerEm+ , vAlphabetic+ , vHanging+ , vIdeographic+ , vMathematical+ , values+ , version+ , vertAdvY+ , vertOriginX+ , vertOriginY+ , viewbox+ , viewtarget+ , visibility+ , width+ , widths+ , wordSpacing+ , writingMode+ , x+ , xHeight+ , x1+ , x2+ , xchannelselector+ , xlinkActuate+ , xlinkArcrole+ , xlinkHref+ , xlinkRole+ , xlinkShow+ , xlinkTitle+ , xlinkType+ , xmlBase+ , xmlLang+ , xmlSpace+ , y+ , y1+ , y2+ , ychannelselector+ , z+ , zoomandpan+ ) where++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:100+--+import Prelude ()++import Text.Blaze.Internal (Attribute, AttributeValue, attribute)++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @accent-height@ attribute.+--+accentHeight :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+accentHeight = attribute "accent-height" " accent-height=\""+{-# INLINE accentHeight #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @accumulate@ attribute.+--+accumulate :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+accumulate = attribute "accumulate" " accumulate=\""+{-# INLINE accumulate #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @additive@ attribute.+--+additive :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+additive = attribute "additive" " additive=\""+{-# INLINE additive #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @alignment-baseline@ attribute.+--+alignmentBaseline :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+alignmentBaseline = attribute "alignment-baseline" " alignment-baseline=\""+{-# INLINE alignmentBaseline #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @alphabetic@ attribute.+--+alphabetic :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+alphabetic = attribute "alphabetic" " alphabetic=\""+{-# INLINE alphabetic #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @amplitude@ attribute.+--+amplitude :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+amplitude = attribute "amplitude" " amplitude=\""+{-# INLINE amplitude #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @arabic-form@ attribute.+--+arabicForm :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+arabicForm = attribute "arabic-form" " arabic-form=\""+{-# INLINE arabicForm #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @ascent@ attribute.+--+ascent :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+ascent = attribute "ascent" " ascent=\""+{-# INLINE ascent #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @attributeName@ attribute.+--+attributename :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+attributename = attribute "attributeName" " attributeName=\""+{-# INLINE attributename #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @attributeType@ attribute.+--+attributetype :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+attributetype = attribute "attributeType" " attributeType=\""+{-# INLINE attributetype #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @azimuth@ attribute.+--+azimuth :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+azimuth = attribute "azimuth" " azimuth=\""+{-# INLINE azimuth #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @baseFrequency@ attribute.+--+basefrequency :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+basefrequency = attribute "baseFrequency" " baseFrequency=\""+{-# INLINE basefrequency #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @baseProfile@ attribute.+--+baseprofile :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+baseprofile = attribute "baseProfile" " baseProfile=\""+{-# INLINE baseprofile #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @baseline-shift@ attribute.+--+baselineShift :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+baselineShift = attribute "baseline-shift" " baseline-shift=\""+{-# INLINE baselineShift #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @bbox@ attribute.+--+bbox :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+bbox = attribute "bbox" " bbox=\""+{-# INLINE bbox #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @begin@ attribute.+--+begin :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+begin = attribute "begin" " begin=\""+{-# INLINE begin #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @bias@ attribute.+--+bias :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+bias = attribute "bias" " bias=\""+{-# INLINE bias #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @by@ attribute.+--+by :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+by = attribute "by" " by=\""+{-# INLINE by #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @calcMode@ attribute.+--+calcmode :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+calcmode = attribute "calcMode" " calcMode=\""+{-# INLINE calcmode #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @cap-height@ attribute.+--+capHeight :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+capHeight = attribute "cap-height" " cap-height=\""+{-# INLINE capHeight #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @class@ attribute.+--+class_ :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+class_ = attribute "class" " class=\""+{-# INLINE class_ #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @clip@ attribute.+--+clip :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+clip = attribute "clip" " clip=\""+{-# INLINE clip #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @clip-path@ attribute.+--+clipPath :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+clipPath = attribute "clip-path" " clip-path=\""+{-# INLINE clipPath #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @clip-rule@ attribute.+--+clipRule :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+clipRule = attribute "clip-rule" " clip-rule=\""+{-# INLINE clipRule #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @clipPathUnits@ attribute.+--+clippathunits :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+clippathunits = attribute "clipPathUnits" " clipPathUnits=\""+{-# INLINE clippathunits #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @color@ attribute.+--+color :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+color = attribute "color" " color=\""+{-# INLINE color #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @color-interpolation@ attribute.+--+colorInterpolation :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+colorInterpolation = attribute "color-interpolation" " color-interpolation=\""+{-# INLINE colorInterpolation #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @color-interpolation-filters@ attribute.+--+colorInterpolationFilters :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+colorInterpolationFilters = attribute "color-interpolation-filters" " color-interpolation-filters=\""+{-# INLINE colorInterpolationFilters #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @color-profile@ attribute.+--+colorProfile :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+colorProfile = attribute "color-profile" " color-profile=\""+{-# INLINE colorProfile #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @color-rendering@ attribute.+--+colorRendering :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+colorRendering = attribute "color-rendering" " color-rendering=\""+{-# INLINE colorRendering #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @contentScriptType@ attribute.+--+contentscripttype :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+contentscripttype = attribute "contentScriptType" " contentScriptType=\""+{-# INLINE contentscripttype #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @contentStyleType@ attribute.+--+contentstyletype :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+contentstyletype = attribute "contentStyleType" " contentStyleType=\""+{-# INLINE contentstyletype #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @cursor@ attribute.+--+cursor :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+cursor = attribute "cursor" " cursor=\""+{-# INLINE cursor #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @cx@ attribute.+--+cx :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+cx = attribute "cx" " cx=\""+{-# INLINE cx #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @cy@ attribute.+--+cy :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+cy = attribute "cy" " cy=\""+{-# INLINE cy #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @d@ attribute.+--+d :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+d = attribute "d" " d=\""+{-# INLINE d #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @descent@ attribute.+--+descent :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+descent = attribute "descent" " descent=\""+{-# INLINE descent #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @diffuseConstant@ attribute.+--+diffuseconstant :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+diffuseconstant = attribute "diffuseConstant" " diffuseConstant=\""+{-# INLINE diffuseconstant #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @direction@ attribute.+--+direction :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+direction = attribute "direction" " direction=\""+{-# INLINE direction #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @display@ attribute.+--+display :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+display = attribute "display" " display=\""+{-# INLINE display #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @divisor@ attribute.+--+divisor :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+divisor = attribute "divisor" " divisor=\""+{-# INLINE divisor #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @dominant-baseline@ attribute.+--+dominantBaseline :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+dominantBaseline = attribute "dominant-baseline" " dominant-baseline=\""+{-# INLINE dominantBaseline #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @dur@ attribute.+--+dur :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+dur = attribute "dur" " dur=\""+{-# INLINE dur #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @dx@ attribute.+--+dx :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+dx = attribute "dx" " dx=\""+{-# INLINE dx #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @dy@ attribute.+--+dy :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+dy = attribute "dy" " dy=\""+{-# INLINE dy #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @edgeMode@ attribute.+--+edgemode :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+edgemode = attribute "edgeMode" " edgeMode=\""+{-# INLINE edgemode #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @elevation@ attribute.+--+elevation :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+elevation = attribute "elevation" " elevation=\""+{-# INLINE elevation #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @enable-background@ attribute.+--+enableBackground :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+enableBackground = attribute "enable-background" " enable-background=\""+{-# INLINE enableBackground #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @end@ attribute.+--+end :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+end = attribute "end" " end=\""+{-# INLINE end #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @exponent@ attribute.+--+exponent_ :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+exponent_ = attribute "exponent" " exponent=\""+{-# INLINE exponent_ #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @externalResourcesRequired@ attribute.+--+externalresourcesrequired :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+externalresourcesrequired = attribute "externalResourcesRequired" " externalResourcesRequired=\""+{-# INLINE externalresourcesrequired #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @fill@ attribute.+--+fill :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+fill = attribute "fill" " fill=\""+{-# INLINE fill #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @fill-opacity@ attribute.+--+fillOpacity :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+fillOpacity = attribute "fill-opacity" " fill-opacity=\""+{-# INLINE fillOpacity #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @fill-rule@ attribute.+--+fillRule :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+fillRule = attribute "fill-rule" " fill-rule=\""+{-# INLINE fillRule #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @filter@ attribute.+--+filter_ :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+filter_ = attribute "filter" " filter=\""+{-# INLINE filter_ #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @filterRes@ attribute.+--+filterres :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+filterres = attribute "filterRes" " filterRes=\""+{-# INLINE filterres #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @filterUnits@ attribute.+--+filterunits :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+filterunits = attribute "filterUnits" " filterUnits=\""+{-# INLINE filterunits #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @flood-color@ attribute.+--+floodColor :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+floodColor = attribute "flood-color" " flood-color=\""+{-# INLINE floodColor #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @flood-opacity@ attribute.+--+floodOpacity :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+floodOpacity = attribute "flood-opacity" " flood-opacity=\""+{-# INLINE floodOpacity #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @font-family@ attribute.+--+fontFamily :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+fontFamily = attribute "font-family" " font-family=\""+{-# INLINE fontFamily #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @font-size@ attribute.+--+fontSize :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+fontSize = attribute "font-size" " font-size=\""+{-# INLINE fontSize #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @font-size-adjust@ attribute.+--+fontSizeAdjust :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+fontSizeAdjust = attribute "font-size-adjust" " font-size-adjust=\""+{-# INLINE fontSizeAdjust #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @font-stretch@ attribute.+--+fontStretch :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+fontStretch = attribute "font-stretch" " font-stretch=\""+{-# INLINE fontStretch #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @font-style@ attribute.+--+fontStyle :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+fontStyle = attribute "font-style" " font-style=\""+{-# INLINE fontStyle #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @font-variant@ attribute.+--+fontVariant :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+fontVariant = attribute "font-variant" " font-variant=\""+{-# INLINE fontVariant #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @font-weight@ attribute.+--+fontWeight :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+fontWeight = attribute "font-weight" " font-weight=\""+{-# INLINE fontWeight #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @format@ attribute.+--+format :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+format = attribute "format" " format=\""+{-# INLINE format #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @from@ attribute.+--+from :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+from = attribute "from" " from=\""+{-# INLINE from #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @fx@ attribute.+--+fx :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+fx = attribute "fx" " fx=\""+{-# INLINE fx #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @fy@ attribute.+--+fy :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+fy = attribute "fy" " fy=\""+{-# INLINE fy #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @g1@ attribute.+--+g1 :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+g1 = attribute "g1" " g1=\""+{-# INLINE g1 #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @g2@ attribute.+--+g2 :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+g2 = attribute "g2" " g2=\""+{-# INLINE g2 #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @glyph-name@ attribute.+--+glyphName :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+glyphName = attribute "glyph-name" " glyph-name=\""+{-# INLINE glyphName #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @glyph-orientation-horizontal@ attribute.+--+glyphOrientationHorizontal :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+glyphOrientationHorizontal = attribute "glyph-orientation-horizontal" " glyph-orientation-horizontal=\""+{-# INLINE glyphOrientationHorizontal #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @glyph-orientation-vertical@ attribute.+--+glyphOrientationVertical :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+glyphOrientationVertical = attribute "glyph-orientation-vertical" " glyph-orientation-vertical=\""+{-# INLINE glyphOrientationVertical #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @glyphRef@ attribute.+--+glyphref :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+glyphref = attribute "glyphRef" " glyphRef=\""+{-# INLINE glyphref #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @gradientTransform@ attribute.+--+gradienttransform :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+gradienttransform = attribute "gradientTransform" " gradientTransform=\""+{-# INLINE gradienttransform #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @gradientUnits@ attribute.+--+gradientunits :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+gradientunits = attribute "gradientUnits" " gradientUnits=\""+{-# INLINE gradientunits #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @hanging@ attribute.+--+hanging :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+hanging = attribute "hanging" " hanging=\""+{-# INLINE hanging #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @height@ attribute.+--+height :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+height = attribute "height" " height=\""+{-# INLINE height #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @horiz-adv-x@ attribute.+--+horizAdvX :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+horizAdvX = attribute "horiz-adv-x" " horiz-adv-x=\""+{-# INLINE horizAdvX #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @horiz-origin-x@ attribute.+--+horizOriginX :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+horizOriginX = attribute "horiz-origin-x" " horiz-origin-x=\""+{-# INLINE horizOriginX #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @horiz-origin-y@ attribute.+--+horizOriginY :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+horizOriginY = attribute "horiz-origin-y" " horiz-origin-y=\""+{-# INLINE horizOriginY #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @id@ attribute.+--+id_ :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+id_ = attribute "id" " id=\""+{-# INLINE id_ #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @ideographic@ attribute.+--+ideographic :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+ideographic = attribute "ideographic" " ideographic=\""+{-# INLINE ideographic #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @image-rendering@ attribute.+--+imageRendering :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+imageRendering = attribute "image-rendering" " image-rendering=\""+{-# INLINE imageRendering #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @in@ attribute.+--+in_ :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+in_ = attribute "in" " in=\""+{-# INLINE in_ #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @in2@ attribute.+--+in2 :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+in2 = attribute "in2" " in2=\""+{-# INLINE in2 #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @intercept@ attribute.+--+intercept :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+intercept = attribute "intercept" " intercept=\""+{-# INLINE intercept #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @k@ attribute.+--+k :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+k = attribute "k" " k=\""+{-# INLINE k #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @k1@ attribute.+--+k1 :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+k1 = attribute "k1" " k1=\""+{-# INLINE k1 #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @k2@ attribute.+--+k2 :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+k2 = attribute "k2" " k2=\""+{-# INLINE k2 #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @k3@ attribute.+--+k3 :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+k3 = attribute "k3" " k3=\""+{-# INLINE k3 #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @k4@ attribute.+--+k4 :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+k4 = attribute "k4" " k4=\""+{-# INLINE k4 #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @kernelMatrix@ attribute.+--+kernelmatrix :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+kernelmatrix = attribute "kernelMatrix" " kernelMatrix=\""+{-# INLINE kernelmatrix #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @kernelUnitLength@ attribute.+--+kernelunitlength :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+kernelunitlength = attribute "kernelUnitLength" " kernelUnitLength=\""+{-# INLINE kernelunitlength #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @kerning@ attribute.+--+kerning :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+kerning = attribute "kerning" " kerning=\""+{-# INLINE kerning #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @keyPoints@ attribute.+--+keypoints :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+keypoints = attribute "keyPoints" " keyPoints=\""+{-# INLINE keypoints #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @keySplines@ attribute.+--+keysplines :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+keysplines = attribute "keySplines" " keySplines=\""+{-# INLINE keysplines #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @keyTimes@ attribute.+--+keytimes :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+keytimes = attribute "keyTimes" " keyTimes=\""+{-# INLINE keytimes #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @lang@ attribute.+--+lang :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+lang = attribute "lang" " lang=\""+{-# INLINE lang #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @lengthAdjust@ attribute.+--+lengthadjust :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+lengthadjust = attribute "lengthAdjust" " lengthAdjust=\""+{-# INLINE lengthadjust #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @letter-spacing@ attribute.+--+letterSpacing :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+letterSpacing = attribute "letter-spacing" " letter-spacing=\""+{-# INLINE letterSpacing #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @lighting-color@ attribute.+--+lightingColor :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+lightingColor = attribute "lighting-color" " lighting-color=\""+{-# INLINE lightingColor #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @limitingConeAngle@ attribute.+--+limitingconeangle :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+limitingconeangle = attribute "limitingConeAngle" " limitingConeAngle=\""+{-# INLINE limitingconeangle #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @local@ attribute.+--+local :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+local = attribute "local" " local=\""+{-# INLINE local #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @marker-end@ attribute.+--+markerEnd :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+markerEnd = attribute "marker-end" " marker-end=\""+{-# INLINE markerEnd #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @marker-mid@ attribute.+--+markerMid :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+markerMid = attribute "marker-mid" " marker-mid=\""+{-# INLINE markerMid #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @marker-start@ attribute.+--+markerStart :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+markerStart = attribute "marker-start" " marker-start=\""+{-# INLINE markerStart #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @markerHeight@ attribute.+--+markerheight :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+markerheight = attribute "markerHeight" " markerHeight=\""+{-# INLINE markerheight #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @markerUnits@ attribute.+--+markerunits :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+markerunits = attribute "markerUnits" " markerUnits=\""+{-# INLINE markerunits #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @markerWidth@ attribute.+--+markerwidth :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+markerwidth = attribute "markerWidth" " markerWidth=\""+{-# INLINE markerwidth #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @mask@ attribute.+--+mask :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+mask = attribute "mask" " mask=\""+{-# INLINE mask #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @maskContentUnits@ attribute.+--+maskcontentunits :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+maskcontentunits = attribute "maskContentUnits" " maskContentUnits=\""+{-# INLINE maskcontentunits #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @maskUnits@ attribute.+--+maskunits :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+maskunits = attribute "maskUnits" " maskUnits=\""+{-# INLINE maskunits #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @mathematical@ attribute.+--+mathematical :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+mathematical = attribute "mathematical" " mathematical=\""+{-# INLINE mathematical #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @max@ attribute.+--+max_ :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+max_ = attribute "max" " max=\""+{-# INLINE max_ #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @media@ attribute.+--+media :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+media = attribute "media" " media=\""+{-# INLINE media #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @method@ attribute.+--+method :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+method = attribute "method" " method=\""+{-# INLINE method #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @min@ attribute.+--+min_ :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+min_ = attribute "min" " min=\""+{-# INLINE min_ #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @mode@ attribute.+--+mode :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+mode = attribute "mode" " mode=\""+{-# INLINE mode #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @name@ attribute.+--+name :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+name = attribute "name" " name=\""+{-# INLINE name #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @numOctaves@ attribute.+--+numoctaves :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+numoctaves = attribute "numOctaves" " numOctaves=\""+{-# INLINE numoctaves #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @offset@ attribute.+--+offset :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+offset = attribute "offset" " offset=\""+{-# INLINE offset #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @onabort@ attribute.+--+onabort :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+onabort = attribute "onabort" " onabort=\""+{-# INLINE onabort #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @onactivate@ attribute.+--+onactivate :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+onactivate = attribute "onactivate" " onactivate=\""+{-# INLINE onactivate #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @onbegin@ attribute.+--+onbegin :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+onbegin = attribute "onbegin" " onbegin=\""+{-# INLINE onbegin #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @onclick@ attribute.+--+onclick :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+onclick = attribute "onclick" " onclick=\""+{-# INLINE onclick #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @onend@ attribute.+--+onend :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+onend = attribute "onend" " onend=\""+{-# INLINE onend #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @onerror@ attribute.+--+onerror :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+onerror = attribute "onerror" " onerror=\""+{-# INLINE onerror #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @onfocusin@ attribute.+--+onfocusin :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+onfocusin = attribute "onfocusin" " onfocusin=\""+{-# INLINE onfocusin #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @onfocusout@ attribute.+--+onfocusout :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+onfocusout = attribute "onfocusout" " onfocusout=\""+{-# INLINE onfocusout #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @onload@ attribute.+--+onload :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+onload = attribute "onload" " onload=\""+{-# INLINE onload #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @onmousedown@ attribute.+--+onmousedown :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+onmousedown = attribute "onmousedown" " onmousedown=\""+{-# INLINE onmousedown #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @onmousemove@ attribute.+--+onmousemove :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+onmousemove = attribute "onmousemove" " onmousemove=\""+{-# INLINE onmousemove #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @onmouseout@ attribute.+--+onmouseout :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+onmouseout = attribute "onmouseout" " onmouseout=\""+{-# INLINE onmouseout #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @onmouseover@ attribute.+--+onmouseover :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+onmouseover = attribute "onmouseover" " onmouseover=\""+{-# INLINE onmouseover #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @onmouseup@ attribute.+--+onmouseup :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+onmouseup = attribute "onmouseup" " onmouseup=\""+{-# INLINE onmouseup #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @onrepeat@ attribute.+--+onrepeat :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+onrepeat = attribute "onrepeat" " onrepeat=\""+{-# INLINE onrepeat #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @onresize@ attribute.+--+onresize :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+onresize = attribute "onresize" " onresize=\""+{-# INLINE onresize #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @onscroll@ attribute.+--+onscroll :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+onscroll = attribute "onscroll" " onscroll=\""+{-# INLINE onscroll #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @onunload@ attribute.+--+onunload :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+onunload = attribute "onunload" " onunload=\""+{-# INLINE onunload #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @onzoom@ attribute.+--+onzoom :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+onzoom = attribute "onzoom" " onzoom=\""+{-# INLINE onzoom #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @opacity@ attribute.+--+opacity :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+opacity = attribute "opacity" " opacity=\""+{-# INLINE opacity #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @operator@ attribute.+--+operator :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+operator = attribute "operator" " operator=\""+{-# INLINE operator #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @order@ attribute.+--+order :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+order = attribute "order" " order=\""+{-# INLINE order #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @orient@ attribute.+--+orient :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+orient = attribute "orient" " orient=\""+{-# INLINE orient #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @orientation@ attribute.+--+orientation :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+orientation = attribute "orientation" " orientation=\""+{-# INLINE orientation #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @origin@ attribute.+--+origin :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+origin = attribute "origin" " origin=\""+{-# INLINE origin #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @overflow@ attribute.+--+overflow :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+overflow = attribute "overflow" " overflow=\""+{-# INLINE overflow #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @overline-position@ attribute.+--+overlinePosition :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+overlinePosition = attribute "overline-position" " overline-position=\""+{-# INLINE overlinePosition #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @overline-thickness@ attribute.+--+overlineThickness :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+overlineThickness = attribute "overline-thickness" " overline-thickness=\""+{-# INLINE overlineThickness #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @panose-1@ attribute.+--+panose1 :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+panose1 = attribute "panose-1" " panose-1=\""+{-# INLINE panose1 #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @path@ attribute.+--+path :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+path = attribute "path" " path=\""+{-# INLINE path #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @pathLength@ attribute.+--+pathlength :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+pathlength = attribute "pathLength" " pathLength=\""+{-# INLINE pathlength #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @patternContentUnits@ attribute.+--+patterncontentunits :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+patterncontentunits = attribute "patternContentUnits" " patternContentUnits=\""+{-# INLINE patterncontentunits #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @patternTransform@ attribute.+--+patterntransform :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+patterntransform = attribute "patternTransform" " patternTransform=\""+{-# INLINE patterntransform #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @patternUnits@ attribute.+--+patternunits :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+patternunits = attribute "patternUnits" " patternUnits=\""+{-# INLINE patternunits #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @pointer-events@ attribute.+--+pointerEvents :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+pointerEvents = attribute "pointer-events" " pointer-events=\""+{-# INLINE pointerEvents #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @points@ attribute.+--+points :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+points = attribute "points" " points=\""+{-# INLINE points #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @pointsAtX@ attribute.+--+pointsatx :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+pointsatx = attribute "pointsAtX" " pointsAtX=\""+{-# INLINE pointsatx #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @pointsAtY@ attribute.+--+pointsaty :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+pointsaty = attribute "pointsAtY" " pointsAtY=\""+{-# INLINE pointsaty #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @pointsAtZ@ attribute.+--+pointsatz :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+pointsatz = attribute "pointsAtZ" " pointsAtZ=\""+{-# INLINE pointsatz #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @preserveAlpha@ attribute.+--+preservealpha :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+preservealpha = attribute "preserveAlpha" " preserveAlpha=\""+{-# INLINE preservealpha #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @preserveAspectRatio@ attribute.+--+preserveaspectratio :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+preserveaspectratio = attribute "preserveAspectRatio" " preserveAspectRatio=\""+{-# INLINE preserveaspectratio #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @primitiveUnits@ attribute.+--+primitiveunits :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+primitiveunits = attribute "primitiveUnits" " primitiveUnits=\""+{-# INLINE primitiveunits #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @r@ attribute.+--+r :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+r = attribute "r" " r=\""+{-# INLINE r #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @radius@ attribute.+--+radius :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+radius = attribute "radius" " radius=\""+{-# INLINE radius #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @refX@ attribute.+--+refx :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+refx = attribute "refX" " refX=\""+{-# INLINE refx #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @refY@ attribute.+--+refy :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+refy = attribute "refY" " refY=\""+{-# INLINE refy #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @rendering-intent@ attribute.+--+renderingIntent :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+renderingIntent = attribute "rendering-intent" " rendering-intent=\""+{-# INLINE renderingIntent #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @repeatCount@ attribute.+--+repeatcount :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+repeatcount = attribute "repeatCount" " repeatCount=\""+{-# INLINE repeatcount #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @repeatDur@ attribute.+--+repeatdur :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+repeatdur = attribute "repeatDur" " repeatDur=\""+{-# INLINE repeatdur #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @requiredExtensions@ attribute.+--+requiredextensions :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+requiredextensions = attribute "requiredExtensions" " requiredExtensions=\""+{-# INLINE requiredextensions #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @requiredFeatures@ attribute.+--+requiredfeatures :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+requiredfeatures = attribute "requiredFeatures" " requiredFeatures=\""+{-# INLINE requiredfeatures #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @restart@ attribute.+--+restart :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+restart = attribute "restart" " restart=\""+{-# INLINE restart #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @result@ attribute.+--+result :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+result = attribute "result" " result=\""+{-# INLINE result #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @rotate@ attribute.+--+rotate :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+rotate = attribute "rotate" " rotate=\""+{-# INLINE rotate #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @rx@ attribute.+--+rx :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+rx = attribute "rx" " rx=\""+{-# INLINE rx #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @ry@ attribute.+--+ry :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+ry = attribute "ry" " ry=\""+{-# INLINE ry #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @scale@ attribute.+--+scale :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+scale = attribute "scale" " scale=\""+{-# INLINE scale #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @seed@ attribute.+--+seed :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+seed = attribute "seed" " seed=\""+{-# INLINE seed #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @shape-rendering@ attribute.+--+shapeRendering :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+shapeRendering = attribute "shape-rendering" " shape-rendering=\""+{-# INLINE shapeRendering #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @slope@ attribute.+--+slope :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+slope = attribute "slope" " slope=\""+{-# INLINE slope #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @spacing@ attribute.+--+spacing :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+spacing = attribute "spacing" " spacing=\""+{-# INLINE spacing #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @specularConstant@ attribute.+--+specularconstant :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+specularconstant = attribute "specularConstant" " specularConstant=\""+{-# INLINE specularconstant #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @specularExponent@ attribute.+--+specularexponent :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+specularexponent = attribute "specularExponent" " specularExponent=\""+{-# INLINE specularexponent #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @spreadMethod@ attribute.+--+spreadmethod :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+spreadmethod = attribute "spreadMethod" " spreadMethod=\""+{-# INLINE spreadmethod #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @startOffset@ attribute.+--+startoffset :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+startoffset = attribute "startOffset" " startOffset=\""+{-# INLINE startoffset #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @stdDeviation@ attribute.+--+stddeviation :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+stddeviation = attribute "stdDeviation" " stdDeviation=\""+{-# INLINE stddeviation #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @stemh@ attribute.+--+stemh :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+stemh = attribute "stemh" " stemh=\""+{-# INLINE stemh #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @stemv@ attribute.+--+stemv :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+stemv = attribute "stemv" " stemv=\""+{-# INLINE stemv #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @stitchTiles@ attribute.+--+stitchtiles :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+stitchtiles = attribute "stitchTiles" " stitchTiles=\""+{-# INLINE stitchtiles #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @stop-color@ attribute.+--+stopColor :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+stopColor = attribute "stop-color" " stop-color=\""+{-# INLINE stopColor #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @stop-opacity@ attribute.+--+stopOpacity :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+stopOpacity = attribute "stop-opacity" " stop-opacity=\""+{-# INLINE stopOpacity #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @strikethrough-position@ attribute.+--+strikethroughPosition :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+strikethroughPosition = attribute "strikethrough-position" " strikethrough-position=\""+{-# INLINE strikethroughPosition #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @strikethrough-thickness@ attribute.+--+strikethroughThickness :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+strikethroughThickness = attribute "strikethrough-thickness" " strikethrough-thickness=\""+{-# INLINE strikethroughThickness #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @string@ attribute.+--+string :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+string = attribute "string" " string=\""+{-# INLINE string #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @stroke@ attribute.+--+stroke :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+stroke = attribute "stroke" " stroke=\""+{-# INLINE stroke #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @stroke-dasharray@ attribute.+--+strokeDasharray :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+strokeDasharray = attribute "stroke-dasharray" " stroke-dasharray=\""+{-# INLINE strokeDasharray #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @stroke-dashoffset@ attribute.+--+strokeDashoffset :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+strokeDashoffset = attribute "stroke-dashoffset" " stroke-dashoffset=\""+{-# INLINE strokeDashoffset #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @stroke-linecap@ attribute.+--+strokeLinecap :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+strokeLinecap = attribute "stroke-linecap" " stroke-linecap=\""+{-# INLINE strokeLinecap #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @stroke-linejoin@ attribute.+--+strokeLinejoin :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+strokeLinejoin = attribute "stroke-linejoin" " stroke-linejoin=\""+{-# INLINE strokeLinejoin #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @stroke-miterlimit@ attribute.+--+strokeMiterlimit :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+strokeMiterlimit = attribute "stroke-miterlimit" " stroke-miterlimit=\""+{-# INLINE strokeMiterlimit #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @stroke-opacity@ attribute.+--+strokeOpacity :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+strokeOpacity = attribute "stroke-opacity" " stroke-opacity=\""+{-# INLINE strokeOpacity #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @stroke-width@ attribute.+--+strokeWidth :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+strokeWidth = attribute "stroke-width" " stroke-width=\""+{-# INLINE strokeWidth #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @style@ attribute.+--+style :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+style = attribute "style" " style=\""+{-# INLINE style #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @surfaceScale@ attribute.+--+surfacescale :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+surfacescale = attribute "surfaceScale" " surfaceScale=\""+{-# INLINE surfacescale #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @systemLanguage@ attribute.+--+systemlanguage :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+systemlanguage = attribute "systemLanguage" " systemLanguage=\""+{-# INLINE systemlanguage #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @tableValues@ attribute.+--+tablevalues :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+tablevalues = attribute "tableValues" " tableValues=\""+{-# INLINE tablevalues #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @target@ attribute.+--+target :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+target = attribute "target" " target=\""+{-# INLINE target #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @targetX@ attribute.+--+targetx :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+targetx = attribute "targetX" " targetX=\""+{-# INLINE targetx #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @targetY@ attribute.+--+targety :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+targety = attribute "targetY" " targetY=\""+{-# INLINE targety #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @text-anchor@ attribute.+--+textAnchor :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+textAnchor = attribute "text-anchor" " text-anchor=\""+{-# INLINE textAnchor #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @text-decoration@ attribute.+--+textDecoration :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+textDecoration = attribute "text-decoration" " text-decoration=\""+{-# INLINE textDecoration #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @text-rendering@ attribute.+--+textRendering :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+textRendering = attribute "text-rendering" " text-rendering=\""+{-# INLINE textRendering #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @textLength@ attribute.+--+textlength :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+textlength = attribute "textLength" " textLength=\""+{-# INLINE textlength #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @title@ attribute.+--+title :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+title = attribute "title" " title=\""+{-# INLINE title #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @to@ attribute.+--+to :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+to = attribute "to" " to=\""+{-# INLINE to #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @transform@ attribute.+--+transform :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+transform = attribute "transform" " transform=\""+{-# INLINE transform #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @type@ attribute.+--+type_ :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+type_ = attribute "type" " type=\""+{-# INLINE type_ #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @u1@ attribute.+--+u1 :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+u1 = attribute "u1" " u1=\""+{-# INLINE u1 #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @u2@ attribute.+--+u2 :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+u2 = attribute "u2" " u2=\""+{-# INLINE u2 #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @underline-position@ attribute.+--+underlinePosition :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+underlinePosition = attribute "underline-position" " underline-position=\""+{-# INLINE underlinePosition #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @underline-thickness@ attribute.+--+underlineThickness :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+underlineThickness = attribute "underline-thickness" " underline-thickness=\""+{-# INLINE underlineThickness #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @unicode@ attribute.+--+unicode :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+unicode = attribute "unicode" " unicode=\""+{-# INLINE unicode #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @unicode-bidi@ attribute.+--+unicodeBidi :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+unicodeBidi = attribute "unicode-bidi" " unicode-bidi=\""+{-# INLINE unicodeBidi #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @unicode-range@ attribute.+--+unicodeRange :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+unicodeRange = attribute "unicode-range" " unicode-range=\""+{-# INLINE unicodeRange #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @units-per-em@ attribute.+--+unitsPerEm :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+unitsPerEm = attribute "units-per-em" " units-per-em=\""+{-# INLINE unitsPerEm #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @v-alphabetic@ attribute.+--+vAlphabetic :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+vAlphabetic = attribute "v-alphabetic" " v-alphabetic=\""+{-# INLINE vAlphabetic #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @v-hanging@ attribute.+--+vHanging :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+vHanging = attribute "v-hanging" " v-hanging=\""+{-# INLINE vHanging #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @v-ideographic@ attribute.+--+vIdeographic :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+vIdeographic = attribute "v-ideographic" " v-ideographic=\""+{-# INLINE vIdeographic #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @v-mathematical@ attribute.+--+vMathematical :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+vMathematical = attribute "v-mathematical" " v-mathematical=\""+{-# INLINE vMathematical #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @values@ attribute.+--+values :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+values = attribute "values" " values=\""+{-# INLINE values #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @version@ attribute.+--+version :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+version = attribute "version" " version=\""+{-# INLINE version #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @vert-adv-y@ attribute.+--+vertAdvY :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+vertAdvY = attribute "vert-adv-y" " vert-adv-y=\""+{-# INLINE vertAdvY #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @vert-origin-x@ attribute.+--+vertOriginX :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+vertOriginX = attribute "vert-origin-x" " vert-origin-x=\""+{-# INLINE vertOriginX #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @vert-origin-y@ attribute.+--+vertOriginY :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+vertOriginY = attribute "vert-origin-y" " vert-origin-y=\""+{-# INLINE vertOriginY #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @viewBox@ attribute.+--+viewbox :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+viewbox = attribute "viewBox" " viewBox=\""+{-# INLINE viewbox #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @viewTarget@ attribute.+--+viewtarget :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+viewtarget = attribute "viewTarget" " viewTarget=\""+{-# INLINE viewtarget #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @visibility@ attribute.+--+visibility :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+visibility = attribute "visibility" " visibility=\""+{-# INLINE visibility #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @width@ attribute.+--+width :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+width = attribute "width" " width=\""+{-# INLINE width #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @widths@ attribute.+--+widths :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+widths = attribute "widths" " widths=\""+{-# INLINE widths #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @word-spacing@ attribute.+--+wordSpacing :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+wordSpacing = attribute "word-spacing" " word-spacing=\""+{-# INLINE wordSpacing #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @writing-mode@ attribute.+--+writingMode :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+writingMode = attribute "writing-mode" " writing-mode=\""+{-# INLINE writingMode #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @x@ attribute.+--+x :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+x = attribute "x" " x=\""+{-# INLINE x #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @x-height@ attribute.+--+xHeight :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+xHeight = attribute "x-height" " x-height=\""+{-# INLINE xHeight #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @x1@ attribute.+--+x1 :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+x1 = attribute "x1" " x1=\""+{-# INLINE x1 #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @x2@ attribute.+--+x2 :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+x2 = attribute "x2" " x2=\""+{-# INLINE x2 #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @xChannelSelector@ attribute.+--+xchannelselector :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+xchannelselector = attribute "xChannelSelector" " xChannelSelector=\""+{-# INLINE xchannelselector #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @xlink:actuate@ attribute.+--+xlinkActuate :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+xlinkActuate = attribute "xlink:actuate" " xlink:actuate=\""+{-# INLINE xlinkActuate #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @xlink:arcrole@ attribute.+--+xlinkArcrole :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+xlinkArcrole = attribute "xlink:arcrole" " xlink:arcrole=\""+{-# INLINE xlinkArcrole #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @xlink:href@ attribute.+--+xlinkHref :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+xlinkHref = attribute "xlink:href" " xlink:href=\""+{-# INLINE xlinkHref #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @xlink:role@ attribute.+--+xlinkRole :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+xlinkRole = attribute "xlink:role" " xlink:role=\""+{-# INLINE xlinkRole #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @xlink:show@ attribute.+--+xlinkShow :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+xlinkShow = attribute "xlink:show" " xlink:show=\""+{-# INLINE xlinkShow #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @xlink:title@ attribute.+--+xlinkTitle :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+xlinkTitle = attribute "xlink:title" " xlink:title=\""+{-# INLINE xlinkTitle #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @xlink:type@ attribute.+--+xlinkType :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+xlinkType = attribute "xlink:type" " xlink:type=\""+{-# INLINE xlinkType #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @xml:base@ attribute.+--+xmlBase :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+xmlBase = attribute "xml:base" " xml:base=\""+{-# INLINE xmlBase #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @xml:lang@ attribute.+--+xmlLang :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+xmlLang = attribute "xml:lang" " xml:lang=\""+{-# INLINE xmlLang #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @xml:space@ attribute.+--+xmlSpace :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+xmlSpace = attribute "xml:space" " xml:space=\""+{-# INLINE xmlSpace #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @y@ attribute.+--+y :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+y = attribute "y" " y=\""+{-# INLINE y #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @y1@ attribute.+--+y1 :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+y1 = attribute "y1" " y1=\""+{-# INLINE y1 #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @y2@ attribute.+--+y2 :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+y2 = attribute "y2" " y2=\""+{-# INLINE y2 #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @yChannelSelector@ attribute.+--+ychannelselector :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+ychannelselector = attribute "yChannelSelector" " yChannelSelector=\""+{-# INLINE ychannelselector #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @z@ attribute.+--+z :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+z = attribute "z" " z=\""+{-# INLINE z #-}++-- WARNING: The next block of code was automatically generated by+-- src/Util/GenerateSvgCombinators.hs:220+--+-- | Combinator for the @zoomAndPan@ attribute.+--+zoomandpan :: AttributeValue -- ^ Attribute value.+ -> Attribute -- ^ Resulting attribute.+zoomandpan = attribute "zoomAndPan" " zoomAndPan=\""+{-# INLINE zoomandpan #-}
+ src/Util/GenerateSvgCombinators.hs view
@@ -0,0 +1,327 @@+{-# LANGUAGE CPP #-}++#define DO_NOT_EDIT (doNotEdit __FILE__ __LINE__)++-- | Generates code for SVG tags.+--+module Util.GenerateSvgCombinators where++import Control.Arrow ((&&&))+import Data.List (sort, sortBy, intersperse, intercalate)+import Data.Ord (comparing)+import System.Directory (createDirectoryIfMissing)+import System.FilePath ((</>), (<.>))+import Data.Map (Map)+import qualified Data.Map as M+import Data.Char (toLower)+import qualified Data.Set as S++import Util.Sanitize (sanitize, prelude)++-- | Datatype for an SVG variant.+--+data SvgVariant = SvgVariant+ { version :: [String]+ , docType :: [String]+ , parents :: [String]+ , leafs :: [String]+ , attributes :: [String]+ , selfClosing :: Bool+ } deriving (Eq)++instance Show SvgVariant where+ show = map toLower . intercalate "-" . version++-- | Get the full module name for an SVG variant.+--+getModuleName :: SvgVariant -> String+getModuleName = ("Text.Blaze." ++) . intercalate "." . version++-- | Get the attribute module name for an SVG variant.+--+getAttributeModuleName :: SvgVariant -> String+getAttributeModuleName = (++ ".Attributes") . getModuleName++-- | Check if a given name causes a name clash.+--+isNameClash :: SvgVariant -> String -> Bool+isNameClash v t+ -- Both an element and an attribute+ | (t `elem` parents v || t `elem` leafs v) && t `elem` attributes v = True+ -- Already a prelude function+ | sanitize t `S.member` prelude = True+ | otherwise = False++-- | Write an SVG variant.+--+writeSvgVariant :: SvgVariant -> IO ()+writeSvgVariant svgVariant = do+ -- Make a directory.+ createDirectoryIfMissing True basePath++ let tags = zip parents' (repeat makeParent)+ ++ zip leafs' (repeat (makeLeaf $ selfClosing svgVariant))+ sortedTags = sortBy (comparing fst) tags+ appliedTags = map (\(x, f) -> f x) sortedTags++ -- Write the main module.+ writeFile' (basePath <.> "hs") $ removeTrailingNewlines $ unlines+ [ DO_NOT_EDIT+ , "{-# LANGUAGE OverloadedStrings #-}"+ , "-- | This module exports SVG combinators used to create documents."+ , "--"+ , exportList modulName $ "module Text.Blaze"+ : "module Text.Blaze.Svg"+ : "docType"+ : "docTypeSvg"+ : map (sanitize . fst) sortedTags+ , DO_NOT_EDIT+ , "import Prelude ((>>), (.), ($))"+ , ""+ , "import Text.Blaze"+ , "import Text.Blaze.Svg"+ , "import Text.Blaze.Internal"+ , ""+ , makeDocType $ docType svgVariant+ , makeDocTypeSvg $ docType svgVariant+ , unlines appliedTags+ ]++ let sortedAttributes = sort attributes'++ -- Write the attribute module.+ writeFile' (basePath </> "Attributes.hs") $ removeTrailingNewlines $ unlines+ [ DO_NOT_EDIT+ , "-- | This module exports combinators that provide you with the"+ , "-- ability to set attributes on SVG elements."+ , "--"+ , "{-# LANGUAGE OverloadedStrings #-}"+ , exportList attributeModuleName $ map sanitize sortedAttributes+ , DO_NOT_EDIT+ , "import Prelude ()"+ , ""+ , "import Text.Blaze.Internal (Attribute, AttributeValue, attribute)"+ , ""+ , unlines (map makeAttribute sortedAttributes)+ ]+ where+ basePath = "src" </> "Text" </> "Blaze" </> foldl1 (</>) version'+ modulName = getModuleName svgVariant+ attributeModuleName = getAttributeModuleName svgVariant+ attributes' = attributes svgVariant+ parents' = parents svgVariant+ leafs' = leafs svgVariant+ version' = version svgVariant+ removeTrailingNewlines = reverse . drop 2 . reverse+ writeFile' file content = do+ putStrLn ("Generating " ++ file)+ writeFile file content++-- | Create a string, consisting of @x@ spaces, where @x@ is the length of the+-- argument.+--+spaces :: String -> String+spaces = flip replicate ' ' . length++-- | Join blocks of code with a newline in between.+--+unblocks :: [String] -> String+unblocks = unlines . intersperse "\n"++-- | A warning to not edit the generated code.+--+doNotEdit :: FilePath -> Int -> String+doNotEdit fileName lineNumber = init $ unlines+ [ "-- WARNING: The next block of code was automatically generated by"+ , "-- " ++ fileName ++ ":" ++ show lineNumber+ , "--"+ ]++-- | Generate an export list for a Haskell module.+--+exportList :: String -- ^ Module name.+ -> [String] -- ^ List of functions.+ -> String -- ^ Resulting string.+exportList _ [] = error "exportList without functions."+exportList name (f:functions) = unlines $+ [ "module " ++ name+ , " ( " ++ f+ ] +++ map (" , " ++) functions +++ [ " ) where"]++-- | Generate a function for a doctype.+--+makeDocType :: [String] -> String+makeDocType lines' = unlines+ [ DO_NOT_EDIT+ , "-- | Combinator for the document type. This should be placed at the top"+ , "-- of every SVG page."+ , "--"+ , unlines (map ("-- > " ++) lines') ++ "--"+ , "docType :: Svg -- ^ The document type SVG."+ , "docType = preEscapedText " ++ show (unlines lines')+ , "{-# INLINE docType #-}"+ ]++-- | Generate a function for the SVG tag (including the doctype).+--+makeDocTypeSvg :: [String] -- ^ The doctype.+ -> String -- ^ Resulting combinator function.+makeDocTypeSvg lines' = unlines+ [ DO_NOT_EDIT+ , "-- | Combinator for the @\\<svg>@ element. This combinator will also"+ , "-- insert the correct doctype."+ , "--"+ , "docTypeSvg :: Svg -- ^ Inner SVG."+ , " -> Svg -- ^ Resulting SVG."+ , "docTypeSvg inner = docType >> (svg ! attribute \"xmlns\" \" xmlns=\\\"\" \"http://www.w3.org/2000/svg\" ! attribute \"xmlns:xlink\" \" xmlns:xlink=\\\"\" \"http://www.w3.org/1999/xlink\" $ inner)"+ , "{-# INLINE docTypeSvg #-}"+ ]++-- | Generate a function for an SVG tag that can be a parent.+--+makeParent :: String -> String+makeParent tag = unlines+ [ DO_NOT_EDIT+ , "-- | Combinator for the @\\<" ++ tag ++ ">@ element."+ , "--"+ , function ++ " :: Svg -- ^ Inner SVG."+ , spaces function ++ " -> Svg -- ^ Resulting SVG."+ , function ++ " = Parent \"" ++ tag ++ "\" \"<" ++ tag+ ++ "\" \"</" ++ tag ++ ">\"" ++ modifier+ , "{-# INLINE " ++ function ++ " #-}"+ ]+ where+ function = sanitize tag+ modifier = if tag `elem` ["style", "script"] then " . external" else ""++-- | Generate a function for an SVG tag that must be a leaf.+--+makeLeaf :: Bool -- ^ Make leaf tags self-closing+ -> String -- ^ Tag for the combinator+ -> String -- ^ Combinator code+makeLeaf closing tag = unlines+ [ DO_NOT_EDIT+ , "-- | Combinator for the @\\<" ++ tag ++ " />@ element."+ , "--"+ , function ++ " :: Svg -- ^ Resulting SVG."+ , function ++ " = Leaf \"" ++ tag ++ "\" \"<" ++ tag ++ "\" " ++ "\""+ ++ (if closing then " /" else "") ++ ">\""+ , "{-# INLINE " ++ function ++ " #-}"+ ]+ where+ function = sanitize tag++-- | Generate a function for an SVG attribute.+--+makeAttribute :: String -> String+makeAttribute name = unlines+ [ DO_NOT_EDIT+ , "-- | Combinator for the @" ++ name ++ "@ attribute."+ , "--"+ , function ++ " :: AttributeValue -- ^ Attribute value."+ , spaces function ++ " -> Attribute -- ^ Resulting attribute."+ , function ++ " = attribute \"" ++ name ++ "\" \" "+ ++ name ++ "=\\\"\""+ , "{-# INLINE " ++ function ++ " #-}"+ ]+ where+ function = sanitize name++-- | SVG 1.1+-- Reference: https://developer.mozilla.org/en/SVG+--+svg11 :: SvgVariant+svg11 = SvgVariant+ { version = ["Svg11"]+ , docType =+ [ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+ , "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\""+ , " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">"+ ]+ , parents =+ [ "a","defs","glyph","g","marker","mask","missing-glyph","pattern", "svg"+ , "switch", "symbol", "linearGradient", "radialGradient"+ ]+ , leafs =+ [ "altGlyph", "altGlyphDef", "altGlyphItem", "animate", "animateColor"+ , "animateMotion", "animateTransform", "circle", "clipPath"+ , "color-profile" , "cursor", "desc", "ellipse", "feBlend"+ , "feColorMatrix", "feComponentTransfer" , "feComposite"+ , "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap"+ , "feDistantLight", "feFlood", "feFuncA", "feFuncB" , "feFuncG"+ , "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode"+ , "feMorphology", "feOffset", "fePointLight", "feSpecularLighting"+ , "feSpotLight" , "feTile", "feTurbulence", "filter", "font"+ , "font-face", "font-face-format" , "font-face-name", "font-face-src"+ , "font-face-uri", "foreignObject" , "glyphRef", "hkern", "image"+ , "line", "metadata", "mpath", "path"+ , "polygon" , "polyline", "rect", "script", "set"+ , "stop", "style" , "text", "textPath", "title", "tref", "tspan", "use"+ , "view", "vkern"+ ]+ , attributes =+ [ "accent-height", "accumulate", "additive", "alphabetic", "amplitude"+ , "arabic-form", "ascent", "attributeName", "attributeType", "azimuth"+ , "baseFrequency", "baseProfile", "bbox", "begin", "bias", "by", "calcMode"+ , "cap-height", "class", "clipPathUnits", "contentScriptType"+ , "contentStyleType", "cx", "cy", "d", "descent", "diffuseConstant", "divisor"+ , "dur", "dx", "dy", "edgeMode", "elevation", "end", "exponent"+ , "externalResourcesRequired", "fill", "filterRes", "filterUnits", "font-family"+ , "font-size", "font-stretch", "font-style", "font-variant", "font-weight"+ , "format", "from", "fx", "fy", "g1", "g2", "glyph-name", "glyphRef"+ , "gradientTransform", "gradientUnits", "hanging", "height", "horiz-adv-x"+ , "horiz-origin-x", "horiz-origin-y", "id", "ideographic", "in", "in2"+ , "intercept", "k", "k1", "k2", "k3", "k4", "kernelMatrix", "kernelUnitLength"+ , "keyPoints", "keySplines", "keyTimes", "lang", "lengthAdjust"+ , "limitingConeAngle", "local", "markerHeight", "markerUnits", "markerWidth"+ , "maskContentUnits", "maskUnits", "mathematical", "max", "media", "method"+ , "min", "mode", "name", "numOctaves", "offset", "onabort", "onactivate"+ , "onbegin", "onclick", "onend", "onerror", "onfocusin", "onfocusout", "onload"+ , "onmousedown", "onmousemove", "onmouseout", "onmouseover", "onmouseup"+ , "onrepeat", "onresize", "onscroll", "onunload", "onzoom", "operator", "order"+ , "orient", "orientation", "origin", "overline-position", "overline-thickness"+ , "panose-1", "path", "pathLength", "patternContentUnits", "patternTransform"+ , "patternUnits", "points", "pointsAtX", "pointsAtY", "pointsAtZ"+ , "preserveAlpha", "preserveAspectRatio", "primitiveUnits", "r", "radius"+ , "refX", "refY", "rendering-intent", "repeatCount", "repeatDur"+ , "requiredExtensions", "requiredFeatures", "restart", "result", "rotate", "rx"+ , "ry", "scale", "seed", "slope", "spacing", "specularConstant"+ , "specularExponent", "spreadMethod", "startOffset", "stdDeviation", "stemh"+ , "stemv", "stitchTiles", "strikethrough-position", "strikethrough-thickness"+ , "string", "style", "surfaceScale", "systemLanguage", "tableValues", "target"+ , "targetX", "targetY", "textLength", "title", "to", "transform", "type", "u1"+ , "u2", "underline-position", "underline-thickness", "unicode", "unicode-range"+ , "units-per-em", "v-alphabetic", "v-hanging", "v-ideographic", "v-mathematical"+ , "values", "version", "vert-adv-y", "vert-origin-x", "vert-origin-y", "viewBox"+ , "viewTarget", "width", "widths", "x", "x-height", "x1", "x2"+ , "xChannelSelector", "xlink:actuate", "xlink:arcrole", "xlink:href"+ , "xlink:role", "xlink:show", "xlink:title", "xlink:type", "xml:base"+ , "xml:lang", "xml:space", "y", "y1", "y2", "yChannelSelector", "z", "zoomAndPan"+ -- Presentation Attributes+ , "alignment-baseline", "baseline-shift", "clip-path", "clip-rule"+ , "clip", "color-interpolation-filters", "color-interpolation"+ , "color-profile", "color-rendering", "color", "cursor", "direction"+ , "display", "dominant-baseline", "enable-background", "fill-opacity"+ , "fill-rule", "filter", "flood-color", "flood-opacity"+ , "font-size-adjust", "glyph-orientation-horizontal"+ , "glyph-orientation-vertical", "image-rendering", "kerning", "letter-spacing"+ , "lighting-color", "marker-end", "marker-mid", "marker-start", "mask"+ , "opacity", "overflow", "pointer-events", "shape-rendering", "stop-color"+ , "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap"+ , "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width"+ , "stroke", "text-anchor", "text-decoration", "text-rendering", "unicode-bidi"+ , "visibility", "word-spacing", "writing-mode"+ ]+ , selfClosing = True+ }++-- | A map of SVG variants, per version, lowercase.+--+svgVariants :: Map String SvgVariant+svgVariants = M.fromList $ map (show &&& id)+ [ svg11 ]++main :: IO ()+main = mapM_ (writeSvgVariant . snd) $ M.toList svgVariants
+ src/Util/Sanitize.hs view
@@ -0,0 +1,78 @@+-- | A program to sanitize an HTML tag to a Haskell function.+--+module Util.Sanitize+ ( sanitize+ , keywords+ , prelude+ ) where++import Data.Char (toLower, toUpper)+import Data.Set (Set)+import qualified Data.Set as S++-- | Sanitize a tag. This function returns a name that can be used as+-- combinator in haskell source code.+--+-- Examples:+--+-- > sanitize "class" == "class_"+-- > sanitize "http-equiv" == "httpEquiv"+--+sanitize :: String -> String+sanitize = appendUnderscore . removeDashOrColon . map toLower+ where+ -- Remove a dash, replacing it by camelcase notation+ --+ -- Example:+ --+ -- > removeDashOrColon "foo-bar" == "fooBar"+ --+ removeDashOrColon ('-' : x : xs) = toUpper x : removeDashOrColon xs+ removeDashOrColon (':' : x : xs) = toUpper x : removeDashOrColon xs+ removeDashOrColon (x : xs) = x : removeDashOrColon xs+ removeDashOrColon [] = []++ appendUnderscore t | t `S.member` keywords = t ++ "_"+ | t `S.member` prelude = t ++ "_"+ | otherwise = t++-- | A set of standard Haskell keywords, which cannot be used as combinators.+--+keywords :: Set String+keywords = S.fromList+ [ "case", "class", "data", "default", "deriving", "do", "else", "if"+ , "import", "in", "infix", "infixl", "infixr", "instance" , "let", "module"+ , "newtype", "of", "then", "type", "where"+ ]++-- | Set of functions from the Prelude, which we do not use as combinators.+--+prelude :: Set String+prelude = S.fromList+ [ "abs", "acos", "acosh", "all", "and", "any", "appendFile", "asTypeOf"+ , "asin", "asinh", "atan", "atan2", "atanh", "break", "catch", "ceiling"+ , "compare", "concat", "concatMap", "const", "cos", "cosh", "curry", "cycle"+ , "decodeFloat", "div", "divMod", "drop", "dropWhile", "either", "elem"+ , "encodeFloat", "enumFrom", "enumFromThen", "enumFromThenTo", "enumFromTo"+ , "error", "even", "exp", "exponent", "fail", "filter", "flip"+ , "floatDigits", "floatRadix", "floatRange", "floor", "fmap", "foldl"+ , "foldl1", "foldr", "foldr1", "fromEnum", "fromInteger", "fromIntegral"+ , "fromRational", "fst", "gcd", "getChar", "getContents", "getLine", "head"+ , "id", "init", "interact", "ioError", "isDenormalized", "isIEEE"+ , "isInfinite", "isNaN", "isNegativeZero", "iterate", "last", "lcm"+ , "length", "lex", "lines", "log", "logBase", "lookup", "map", "mapM"+ , "mapM_", "max", "maxBound", "maximum", "maybe", "min", "minBound"+ , "minimum", "mod", "negate", "not", "notElem", "null", "odd", "or"+ , "otherwise", "pi", "pred", "print", "product", "properFraction", "putChar"+ , "putStr", "putStrLn", "quot", "quotRem", "read", "readFile", "readIO"+ , "readList", "readLn", "readParen", "reads", "readsPrec", "realToFrac"+ , "recip", "rem", "repeat", "replicate", "return", "reverse", "round"+ , "scaleFloat", "scanl", "scanl1", "scanr", "scanr1", "seq", "sequence"+ , "sequence_", "show", "showChar", "showList", "showParen", "showString"+ , "shows", "showsPrec", "significand", "signum", "sin", "sinh", "snd"+ , "span", "splitAt", "sqrt", "subtract", "succ", "sum", "tail", "take"+ , "takeWhile", "tan", "tanh", "toEnum", "toInteger", "toRational"+ , "truncate", "text", "uncurry", "undefined", "unlines", "until", "unwords", "unzip"+ , "unzip3", "userError", "words", "writeFile", "zip", "zip3", "zipWith"+ , "zipWith3"+ ]