Modulelucid-svg-0.7.1.1Haskell2010
Lucid.Svg
DSL for creating SVG.
- 2 types
- 3 classes
- 269 values
- Packagelucid-svg-0.7.1.1
- Exports274
- LanguageHaskell2010
- LicenceBSD-3-Clause
- SourceSvg.hs
Intro
1 declarationSVG elements and attributes in Lucid-Svg are written with a postfix ‘_’.
Some examples:
path_, circle_, color_, scale_
Note: If you're testing in the REPL you need to add a type annotation to indicate that you want SVG. In normal code your top-level declaration signatures handle that.
Plain text is written using the OverloadedStrings and
ExtendedDefaultRules extensions, and is automatically escaped:
As in Lucid, elements nest by function application:
g_ (text_ "Hello SVG") :: Svg ()<g><text>Hello SVG</text></g>
and elements are juxtaposed via monoidal append or monadic sequencing:
text_ "Hello" <> text_ "SVG" :: Svg ()<text>Hello</text><text>SVG</text>
do text_ "Hello"; text_ "SVG" :: Svg ()<text>Hello</text><text>SVG</text>
Attributes are set by providing an argument list. In contrast to HTML many SVG elements have no content, only attributes.
rect_ [width_ "100%", height_ "100%", fill_ "red"] :: Svg ()<rect height="100%" width="100%" fill="red"></rect>
Attributes and elements that share the same name are not conflicting unless they appear on the list in the note below:
mask_ [mask_ "attribute"] "element" :: Svg ()<mask mask="attribute">element</mask>
Note: The following element and attribute names overlap and cannot be
handled polymorphically since doing so would create conflicting functional
dependencies. The unqualifed name refers to the element.
We qualify the attribute name as A. For example, path_ and path_.
colorProfile_, cursor_, filter_, path_, and style_
Path data can be constructed using the functions in Lucid.Svg.Path
and combined monoidally:
path_ (
[ d_ (mA 10 80 <> qA 52.5 10 95 80 <> tA 180 80 <> z)
, stroke_ "blue"
, fill_ "orange"
])
<path d="M 10,80 Q 52.5,10 95,80 T 180,80 Z" stroke="blue" fill="orange"></path>A slightly longer example:
import Lucid.Svg
svg :: Svg () -> Svg ()
svg content = do
doctype_
with (svg11_ content) [version_ "1.1", width_ "300" , height_ "200"]
contents :: Svg ()
contents = do
rect_ [width_ "100%", height_ "100%", fill_ "red"]
circle_ [cx_ "150", cy_ "100", r_ "80", fill_ "green"]
text_ [x_ "150", y_ "125", fontSize_ "60", textAnchor_ "middle", fill_ "white"] "SVG"
main :: IO ()
main = do
print $ svg contentsRendering
1 declarationRe-exports
260 declarationsmodule Lucid.Svg.Path
module Lucid.Svg.Elements
The accentHeight attribute.
The accumulate attribute.
The additive attribute.
The alignmentBaseline attribute.
The alphabetic attribute.
The amplitude attribute.
The arabicForm attribute.
The ascent attribute.
The attributename attribute.
The attributetype attribute.
The azimuth attribute.
The basefrequency attribute.
The baseprofile attribute.
The baselineShift attribute.
The bbox attribute.
The begin attribute.
The bias attribute.
The by attribute.
The calcmode attribute.
The capHeight attribute.
The class attribute.
The clip attribute.
The clip-path attribute.
The clipRule attribute.
The clippathunits attribute.
The color attribute.
The colorInterpolation attribute.
The colorInterpolationFilters attribute.
The colorProfile attribute.
The colorRendering attribute.
The contentscripttype attribute.
The contentstyletype attribute.
The cx attribute.
The cy attribute.
The d attribute.
The descent attribute.
The diffuseconstant attribute.
The direction attribute.
The display attribute.
The divisor attribute.
The dominantBaseline attribute.
The dur attribute.
The dx attribute.
The dy attribute.
The edgemode attribute.
The elevation attribute.
The enableBackground attribute.
The end attribute.
The exponent attribute.
The externalresourcesrequired attribute.
The fill attribute.
The fillOpacity attribute.
The fillRule attribute.
The filterres attribute.
The filterunits attribute.
The floodColor attribute.
The floodOpacity attribute.
The fontFamily attribute.
The fontSize attribute.
The fontSizeAdjust attribute.
The fontStretch attribute.
The fontStyle attribute.
The fontVariant attribute.
The fontWeight attribute.
The format attribute.
The from attribute.
The fx attribute.
The fy attribute.
The g1 attribute.
The g2 attribute.
The glyphName attribute.
The glyphOrientationHorizontal attribute.
The glyphOrientationVertical attribute.
The -- | The gradienttransform@ attribute.
The gradientunits attribute.
The hanging attribute.
The height attribute.
The horizAdvX attribute.
The horizOriginX attribute.
The horizOriginY attribute.
The id attribute.
The ideographic attribute.
The imageRendering attribute.
The in attribute.
The in2 attribute.
The intercept attribute.
The k attribute.
The k1 attribute.
The k2 attribute.
The k3 attribute.
The k4 attribute.
The kernelmatrix attribute.
The kernelunitlength attribute.
The kerning attribute.
The keypoints attribute.
The keysplines attribute.
The keytimes attribute.
The lang attribute.
The lengthadjust attribute.
The letterSpacing attribute.
The lightingColor attribute.
The limitingconeangle attribute.
The local attribute.
The markerEnd attribute.
The markerMid attribute.
The markerStart attribute.
The markerheight attribute.
The markerunits attribute.
The markerwidth attribute.
The maskcontentunits attribute.
The maskunits attribute.
The mathematical attribute.
The max attribute.
The media attribute.
The method attribute.
The min attribute.
The mode attribute.
The name attribute.
The numoctaves attribute.
The offset attribute.
The onabort attribute.
The onactivate attribute.
The onbegin attribute.
The onclick attribute.
The onend attribute.
The onerror attribute.
The onfocusin attribute.
The onfocusout attribute.
The onload attribute.
The onmousedown attribute.
The onmousemove attribute.
The onmouseout attribute.
The onmouseover attribute.
The onmouseup attribute.
The onrepeat attribute.
The onresize attribute.
The onscroll attribute.
The onunload attribute.
The onzoom attribute.
The opacity attribute.
The operator attribute.
The order attribute.
The orient attribute.
The orientation attribute.
The origin attribute.
The overflow attribute.
The overlinePosition attribute.
The overlineThickness attribute.
The panose1 attribute.
The paint-order attribute.
The pathlength attribute.
The patterncontentunits attribute.
The patterntransform attribute.
The patternunits attribute.
The pointerEvents attribute.
The points attribute.
The pointsatx attribute.
The pointsaty attribute.
The pointsatz attribute.
The preservealpha attribute.
The preserveaspectratio attribute.
The primitiveunits attribute.
The r attribute.
The radius attribute.
The refx attribute.
The refy attribute.
The renderingIntent attribute.
The repeatcount attribute.
The repeatdur attribute.
The requiredextensions attribute.
The requiredfeatures attribute.
The restart attribute.
The result attribute.
The rotate attribute.
The rx attribute.
The ry attribute.
The scale attribute.
The seed attribute.
The shapeRendering attribute.
The slope attribute.
The spacing attribute.
The specularconstant attribute.
The specularexponent attribute.
The spreadmethod attribute.
The startoffset attribute.
The stddeviation attribute.
The stemh attribute.
The stemv attribute.
The stitchtiles attribute.
The stopColor attribute.
The stopOpacity attribute.
The strikethroughPosition attribute.
The strikethroughThickness attribute.
The string attribute.
The stroke attribute.
The strokeDasharray attribute.
The strokeDashoffset attribute.
The strokeLinecap attribute.
The strokeLinejoin attribute.
The strokeMiterlimit attribute.
The strokeOpacity attribute.
The strokeWidth attribute.
The surfacescale attribute.
The systemlanguage attribute.
The tablevalues attribute.
The target attribute.
The targetx attribute.
The targety attribute.
The textAnchor attribute.
The textDecoration attribute.
The textRendering attribute.
The textlength attribute.
The to attribute.
The transform attribute.
The type attribute.
The u1 attribute.
The u2 attribute.
The underlinePosition attribute.
The underlineThickness attribute.
The unicode attribute.
The unicodeBidi attribute.
The unicodeRange attribute.
The unitsPerEm attribute.
The vAlphabetic attribute.
The vHanging attribute.
The vIdeographic attribute.
The vMathematical attribute.
The values attribute.
The version attribute.
The vertAdvY attribute.
The vertOriginX attribute.
The vertOriginY attribute.
The viewbox attribute.
The viewtarget attribute.
The visibility attribute.
The width attribute.
The widths attribute.
The wordSpacing attribute.
The writingMode attribute.
The x attribute.
The xHeight attribute.
The x1 attribute.
The x2 attribute.
The xchannelselector attribute.
The xlinkActuate attribute.
The xlinkArcrole attribute.
The xlinkHref attribute.
The xlinkRole attribute.
The xlinkShow attribute.
The xlinkTitle attribute.
The xlinkType attribute.
The xmlBase attribute.
The xmlLang attribute.
The xmlSpace attribute.
The y attribute.
The y1 attribute.
The y2 attribute.
The ychannelselector attribute.
The z attribute.
The zoomandpan attribute.
From Lucid.Base
5 declarationsRender the HTML to a lazy Text.
This is a convenience function defined in terms of execHtmlT, runIdentity and toLazyByteString, and decodeUtf8. Check the source if you're interested in the lower-level behaviour.
Render the HTML to a lazy ByteString.
This is a convenience function defined in terms of execHtmlT, runIdentity and toLazyByteString. Check the source if you're interested in the lower-level behaviour.
Render the HTML to a lazy Text, but in a monad.
This is a convenience function defined in terms of execHtmlT and toLazyByteString, and decodeUtf8. Check the source if you're interested in the lower-level behaviour.
Render the HTML to a lazy ByteString, but in a monad.
This is a convenience function defined in terms of execHtmlT and toLazyByteString. Check the source if you're interested in the lower-level behaviour.
Render the HTML to a lazy ByteString.
This is a convenience function defined in terms of execHtmlT, runIdentity and toLazyByteString. Check the source if you're interested in the lower-level behaviour.
Running
Build the HTML. Analogous to execState.
You might want to use this is if you want to do something with the raw Builder. Otherwise for simple cases you can just use renderText or renderBS.
evalHtmlT Evaluate the HTML to its return value. Analogous to evalState.
Use this if you want to ignore the HTML output of an action completely and just get the result.
For using with the Html type, you'll need runIdentity e.g.
runIdentity (evalHtmlT (p_ "Hello!"))()
Types
A simple attribute. Don't use the constructor, use makeAttribute. Attributes are case sensitive, so if you want attributes to be merged properly, use a single case representation.
Instances7Eq, Show, Hashable, Term, TermRaw, …
Eq AttributeDefined in lucid-2.11.20230408 · Lucid.BaseShow AttributeDefined in lucid-2.11.20230408 · Lucid.BaseHashable AttributeDefined in lucid-2.11.20230408 · Lucid.BaseTerm Text AttributeDefined in lucid-2.11.20230408 · Lucid.BaseTermRaw Text AttributeDefined in lucid-2.11.20230408 · Lucid.Base(Applicative m, f ~ HtmlT m a) => Term [Attribute] (f -> HtmlT m a)Defined in lucid-2.11.20230408 · Lucid.BaseGiven attributes, expect more child input.
(Monad m, ToHtml f, a ~ ()) => TermRaw [Attribute] (f -> HtmlT m a)Defined in lucid-2.11.20230408 · Lucid.BaseGiven attributes, expect more child input.
Classes
Used to construct HTML terms.
Simplest use: p_ = term "p" yields p_.
Very overloaded for three cases:
The first case is the basic
argof[(Text,Text)]which will return a function that wants children.The second is an
argwhich isHtmlT m (), in which case the term accepts no attributes and just the children are used for the element.Finally, this is also used for overloaded attributes, like style_ or title_. If a return type of
(Text,Text)is inferred then an attribute will be made.
The instances look intimidating but actually the constraints make
it very general so that type inference works well even in the
presence of things like OverloadedLists and such.
Instances3Term
Term Text AttributeDefined in lucid-2.11.20230408 · Lucid.Base(Applicative m, f ~ HtmlT m a) => Term [Attribute] (f -> HtmlT m a)Defined in lucid-2.11.20230408 · Lucid.BaseGiven attributes, expect more child input.
Applicative m => Term (HtmlT m a) (HtmlT m a)Defined in lucid-2.11.20230408 · Lucid.BaseGiven children immediately, just use that and expect no attributes.
Can be converted to HTML.
Instances6ToHtml
ToHtml ByteStringDefined in lucid-2.11.20230408 · Lucid.BaseToHtml ByteStringDefined in lucid-2.11.20230408 · Lucid.BaseToHtml StringDefined in lucid-2.11.20230408 · Lucid.BaseToHtml TextDefined in lucid-2.11.20230408 · Lucid.BaseToHtml TextDefined in lucid-2.11.20230408 · Lucid.Base(a ~ (), m ~ Identity) => ToHtml (HtmlT m a)Defined in lucid-2.11.20230408 · Lucid.Base
With an element use these attributes. An overloaded way of adding attributes either to an element accepting attributes-and-children or one that just accepts attributes. See the two instances.