definition module Text.HTML
/**
* This module provides data types for easy construction of Html documents.
* All tags and attributes of Xhtml 1.0 transitional are captured
* in the HtmlTag and HtmlAttribute type. This library does not control
* **how** you assemble these tags into a document. It only discerns
* between tags that contain other tags and tags that are empty.
*
* For information on how to construct valid html pages with these types,
* see the document definition at:
* http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
*/
import StdString, Data.Maybe
/**
* This type provides an enumeration of all html tags.
*/
:: HtmlTag = Text !String //Text, in which special characters should be automatically escaped.
| Html !String //Text, which should be used without any conversions.
| ATag ![HtmlAttr] ![HtmlTag]
| AbbrTag ![HtmlAttr] ![HtmlTag]
| AcronymTag ![HtmlAttr] ![HtmlTag]
| AddressTag ![HtmlAttr] ![HtmlTag]
| AppletTag ![HtmlAttr] ![HtmlTag]
| AreaTag ![HtmlAttr]
| BTag ![HtmlAttr] ![HtmlTag]
| BaseTag ![HtmlAttr] ![HtmlTag]
| BasefontTag ![HtmlAttr]
| BdoTag ![HtmlAttr] ![HtmlTag]
| BigTag ![HtmlAttr] ![HtmlTag]
| BlockquoteTag ![HtmlAttr] ![HtmlTag]
| BodyTag ![HtmlAttr] ![HtmlTag]
| BrTag ![HtmlAttr]
| ButtonTag ![HtmlAttr] ![HtmlTag]
| CaptionTag ![HtmlAttr] ![HtmlTag]
| CanvasTag ![HtmlAttr] ![HtmlTag]
| CenterTag ![HtmlAttr] ![HtmlTag]
| CircleTag ![HtmlAttr]
| CiteTag ![HtmlAttr] ![HtmlTag]
| CodeTag ![HtmlAttr] ![HtmlTag]
| ColTag ![HtmlAttr] ![HtmlTag]
| ColgroupTag ![HtmlAttr] ![HtmlTag]
| DdTag ![HtmlAttr] ![HtmlTag]
| DelTag ![HtmlAttr] ![HtmlTag]
| DfnTag ![HtmlAttr] ![HtmlTag]
| DirTag ![HtmlAttr] ![HtmlTag]
| DivTag ![HtmlAttr] ![HtmlTag]
| DlTag ![HtmlAttr] ![HtmlTag]
| DtTag ![HtmlAttr] ![HtmlTag]
| EllipseTag ![HtmlAttr]
| EmTag ![HtmlAttr] ![HtmlTag]
| FieldsetTag ![HtmlAttr] ![HtmlTag]
| FontTag ![HtmlAttr] ![HtmlTag]
| FormTag ![HtmlAttr] ![HtmlTag]
| H1Tag ![HtmlAttr] ![HtmlTag]
| H2Tag ![HtmlAttr] ![HtmlTag]
| H3Tag ![HtmlAttr] ![HtmlTag]
| H4Tag ![HtmlAttr] ![HtmlTag]
| H5Tag ![HtmlAttr] ![HtmlTag]
| H6Tag ![HtmlAttr] ![HtmlTag]
| HeadTag ![HtmlAttr] ![HtmlTag]
| HrTag ![HtmlAttr]
| HtmlTag ![HtmlAttr] ![HtmlTag]
| ITag ![HtmlAttr] ![HtmlTag]
| IframeTag ![HtmlAttr] ![HtmlTag]
| ImgTag ![HtmlAttr]
| InputTag ![HtmlAttr]
| InsTag ![HtmlAttr] ![HtmlTag]
| IsindexTag ![HtmlAttr]
| KdbTag ![HtmlAttr] ![HtmlTag]
| LabelTag ![HtmlAttr] ![HtmlTag]
| LegendTag ![HtmlAttr] ![HtmlTag]
| LiTag ![HtmlAttr] ![HtmlTag]
| LinkTag ![HtmlAttr] ![HtmlTag]
| MapTag ![HtmlAttr] ![HtmlTag]
| MenuTag ![HtmlAttr] ![HtmlTag]
| MetaTag ![HtmlAttr] ![HtmlTag]
| NoframesTag ![HtmlAttr] ![HtmlTag]
| NoscriptTag ![HtmlAttr] ![HtmlTag]
| ObjectTag ![HtmlAttr] ![HtmlTag]
| OlTag ![HtmlAttr] ![HtmlTag]
| OptgroupTag ![HtmlAttr] ![HtmlTag]
| OptionTag ![HtmlAttr] ![HtmlTag]
| PTag ![HtmlAttr] ![HtmlTag]
| ParamTag ![HtmlAttr] ![HtmlTag]
| PreTag ![HtmlAttr] ![HtmlTag]
| QTag ![HtmlAttr] ![HtmlTag]
| RectTag ![HtmlAttr]
| STag ![HtmlAttr] ![HtmlTag]
| SampTag ![HtmlAttr] ![HtmlTag]
| ScriptTag ![HtmlAttr] ![HtmlTag]
| SelectTag ![HtmlAttr] ![HtmlTag]
| SmallTag ![HtmlAttr] ![HtmlTag]
| SpanTag ![HtmlAttr] ![HtmlTag]
| StrikeTag ![HtmlAttr] ![HtmlTag]
| StrongTag ![HtmlAttr] ![HtmlTag]
| StyleTag ![HtmlAttr] ![HtmlTag]
| SubTag ![HtmlAttr] ![HtmlTag]
| SupTag ![HtmlAttr] ![HtmlTag]
| SvgTag ![HtmlAttr] ![SVGAttr] ![SVGElt]
| TableTag ![HtmlAttr] ![HtmlTag]
| TbodyTag ![HtmlAttr] ![HtmlTag]
| TdTag ![HtmlAttr] ![HtmlTag]
| TextTag ![HtmlAttr] ![HtmlTag]
| TextareaTag ![HtmlAttr] ![HtmlTag]
| TfootTag ![HtmlAttr] ![HtmlTag]
| ThTag ![HtmlAttr] ![HtmlTag]
| TheadTag ![HtmlAttr] ![HtmlTag]
| TitleTag ![HtmlAttr] ![HtmlTag]
| TrTag ![HtmlAttr] ![HtmlTag]
| TspanTag ![HtmlAttr] ![HtmlTag]
| TtTag ![HtmlAttr] ![HtmlTag]
| UTag ![HtmlAttr] ![HtmlTag]
| UlTag ![HtmlAttr] ![HtmlTag]
| VarTag ![HtmlAttr] ![HtmlTag]
/**
* This type provides an enumeration of all attributes that can occur in html tags.
*/
:: HtmlAttr = AbbrAttr !String
| AcceptAttr !String
| AcceptcharsetAttr !String
| AccesskeyAttr !String
| ActionAttr !String
| AlignAttr !String
| AlinkAttr !String
| AltAttr !String
| ArchiveAttr !String
| AxisAttr !String
| BackgroundAttr !String
| BgcolorAttr !String
| BorderAttr !String
| CellspacingAttr !String
| CellpaddingAttr !String
| CharAttr !String
| CharoffAttr !String
| CharsetAttr !String
| CheckedAttr
| CiteAttr !String
| ClassAttr !String
| ClassidAttr !String
| ColorAttr !String
| ColsAttr !String
| ColspanAttr !String
| CodebaseAttr !String
| CodetypeAttr !String
| ContentAttr !String
| CompactAttr
| CoordsAttr !String
| DataAttr !String
| DatetimeAttr !String
| DeclareAttr
| DeferAttr !String
| DirAttr !String
| DisabledAttr
| DXAttr !String
| DYAttr !String
| EnctypeAttr !String
| FaceAttr !String
| ForAttr !String
| FrameAttr !String
| FrameborderAttr !String
| HeadersAttr !String
| HeightAttr !String
| HrefAttr !String
| HreflangAttr !String
| HttpequivAttr !String
| HspaceAttr !String
| IdAttr !String
| IsmapAttr
| LabelAttr !String
| LangAttr !String
| LanguageAttr !String
| LinkAttr !String
| LongdescAttr !String
| MarginheightAttr !String
| MarginwidthAttr !String
| MaxlengthAttr !String
| MediaAttr !String
| MethodAttr !String
| MultipleAttr
| NameAttr !String
| NohrefAttr
| NoshadeAttr
| NowrapAttr
| OnblurAttr !String
| OnchangeAttr !String
| OnclickAttr !String
| OndblclickAttr !String
| OnfocusAttr !String
| OnloadAttr !String
| OnmousedownAttr !String
| OnmousemoveAttr !String
| OnmouseoutAttr !String
| OnmouseoverAttr !String
| OnmouseupAttr !String
| OnkeydownAttr !String
| OnkeypressAttr !String
| OnkeyupAttr !String
| OnresetAttr !String
| OnselectAttr !String
| OnsubmitAttr !String
| OnunloadAttr !String
| ProfileAttr !String
| PromptAttr !String
| ReadonlyAttr
| RelAttr !String
| RevAttr !String
| RowsAttr !String
| RowspanAttr !String
| RulesAttr !String
| RXAttr !String
| RYAttr !String
| SchemeAttr !String
| ScopeAttr !String
| ScrollingAttr !String
| SelectedAttr
| ShapeAttr !String
| SizeAttr !String
| SpanAttr !String
| SrcAttr !String
| StandbyAttr !String
| StartAttr !String
| StyleAttr !String
| SummaryAttr !String
| TabindexAttr !String
| TargetAttr !String
| TextAttr !String
| TitleAttr !String
| TypeAttr !String
| UsemapAttr !String
| ValignAttr !String
| ValueAttr !String
| ValuetypeAttr !String
| VlinkAttr !String
| VspaceAttr !String
| WidthAttr !String
| XmllangAttr !String
| XmlspaceAttr !String
| XmlnsAttr !String
| XmlnsXlinkAttr !String
/**
* This type provides an enumeration of (not yet) all SVG elements.
*/
:: SVGElt = SVGElt ![HtmlAttr] ![SVGAttr] ![SVGElt]
| CircleElt ![HtmlAttr] ![SVGAttr]
| ClipPathElt ![HtmlAttr] ![SVGAttr] ![SVGElt]
| DefsElt ![HtmlAttr] ![SVGAttr] ![SVGElt]
| EllipseElt ![HtmlAttr] ![SVGAttr]
| GElt ![HtmlAttr] ![SVGAttr] ![SVGElt]
| ImageElt ![HtmlAttr] ![SVGAttr] ![SVGElt]
| LinearGradientElt ![HtmlAttr] ![SVGAttr] ![SVGElt]
| LineElt ![HtmlAttr] ![SVGAttr]
| MarkerElt ![HtmlAttr] ![SVGAttr] ![SVGElt]
| MaskElt ![HtmlAttr] ![SVGAttr] ![SVGElt]
| PathElt ![HtmlAttr] ![SVGAttr]
| PolygonElt ![HtmlAttr] ![SVGAttr]
| PolylineElt ![HtmlAttr] ![SVGAttr]
| RectElt ![HtmlAttr] ![SVGAttr]
| RadialGradientElt ![HtmlAttr] ![SVGAttr] ![SVGElt]
| StopElt ![HtmlAttr] ![SVGAttr]
| TextElt ![HtmlAttr] ![SVGAttr] !String // currently only a String as content
/*
* This type provides an enumeration of (not yet) all SVG element attributes.
*/
:: SVGAttr = AlignmentBaselineAttr !String
| BaseProfileAttr !String // necessary?
| ContentScriptTypeAttr !String
| ClipPathAttr !String
// | ContentStyleTypeAttr !String // deprecated in SVG1.1
| CxAttr !SVGCoordinate
| CyAttr !SVGCoordinate
| DominantBaselineAttr !String
| ExternalResourcesRequiredAttr !Bool
| FillAttr !SVGPaint
| FillOpacityAttr !SVGFillOpacity
| FillRuleAttr !SVGFillRule
| FontFamilyAttr !String
| FontSizeAttr !String // {,,,,inherit}
| FontStyleAttr !String // {normal,italic,oblique,inherit}
| FontStretchAttr !String // {normal,wider,narrower,ultra-condensed,extra-condensed,condensed,semi-condensed,semi-expanded,expanded,extra-expanded,ultra-expanded,inherit}
| FontVariantAttr !String // {normal,small-caps,inherit}
| FontWeightAttr !String // {normal,bold,bolder,lighter,100,200,300,400,500,600,700,800,900,inherit}
| LengthAdjustAttr !SVGLengthAdjust
| MarkerStartAttr !String
| MarkerMidAttr !String
| MarkerEndAttr !String
| MarkerHeightAttr !SVGLength
| MarkerWidthAttr !SVGLength
| MaskAttr !String
| OffsetAttr !String
| OrientAttr !String
| PointsAttr ![(String, String)]
| PreserveAspectRatioAttr !(Maybe SVGDefer) !(Maybe SVGAlign) !(Maybe SVGMeetOrSlice)
| RAttr !SVGLength
| RefXAttr !SVGLength
| RefYAttr !SVGLength
| RxAttr !SVGLength // negative value is an error
| RyAttr !SVGLength // negative value is an error
| StopColorAttr !String
| StopOpacityAttr !String
| StrokeAttr !SVGPaint
| StrokeDashArrayAttr !SVGStrokeDashArray
| StrokeDashOffsetAttr !SVGStrokeDashOffset
| StrokeLineCapAttr !SVGLineCap
| StrokeLineJoinAttr !SVGLineJoin
| StrokeMiterLimitAttr !SVGStrokeMiterLimit
| StrokeOpacityAttr !String//SVGOpacityValue
| StrokeWidthAttr !SVGStrokeWidth
| TextAnchorAttr !String // {start,middle,end,inherit}
| TextLengthAttr !SVGLength
| TextRenderingAttr !String
| TransformAttr ![SVGTransform]
| VersionAttr !String // "1.1" for SVG1.1
| ViewBoxAttr !SVGNumber !SVGNumber !SVGNumber !SVGNumber //
| XAttr !SVGCoordinate
| X1Attr !SVGLength // negative value is an error
| X2Attr !SVGLength // negative value is an error
| XLinkHRefAttr !String //
| YAttr !SVGCoordinate
| Y1Attr !SVGLength // negative value is an error
| Y2Attr !SVGLength // negative value is an error
| ZoomAndPanAttr !SVGZoomAndPan
:: SVGAlign = XMinYMin // preserve aspect-ratio, align of element's viewBox with smallest x-value of viewport, align of element's viewBox with smallest y-value of viewport
| XMidYMin // preserve aspect-ratio, align midpoint x-value of element's viewBox with midpoint x-value of viewport, align of element's viewBox with smallest y-value of viewport
| XMaxYMin // preserve aspect-ratio, align + of element's viewBox with maximum x-value of viewport, align of element's viewBox with smallest y-value of viewport
| XMinYMid // preserve aspect-ratio, align of element's viewBox with smallest x-value of viewport, align midpoint y-value of element's viewBox with midpoint y-value of viewport
| XMidYMid // preserve aspect-ratio, align midpoint x-value of element's viewBox with midpoint x-value of viewport, align midpoint y-value of element's viewBox with midpoint y-value of viewport
| XMaxYMid // preserve aspect-ratio, align + of element's viewBox with maximum x-value of viewport, align midpoint y-value of element's viewBox with midpoint y-value of viewport
| XMinYMax // preserve aspect-ratio, align of element's viewBox with smallest x-value of viewport, align + of element's viewBox with maximum y-value of viewport
| XMidYMax // preserve aspect-ratio, align midpoint x-value of element's viewBox with midpoint x-value of viewport, align + of element's viewBox with maximum y-value of viewport
| XMaxYMax // preserve aspect-ratio, align + of element's viewBox with maximum x-value of viewport, align + of element's viewBox with maximum y-value of viewport
:: SVGColor = SVGRGB !Int !Int !Int // component values, each between 0 and 255 (inclusive)
| SVGColorText !String // one of the recognized color keywords names
:: SVGCoordinate :== SVGLength // coordinate ::= length
:: SVGDefer = SVGDefer
:: SVGFillOpacity = FillOpacity !SVGNumber//!SVGOpacityValue
| FillOpacityInherit
:: SVGFillRule = FillNonzero | FillEvenodd | FillInherit
:: SVGFuncIRI = IRI String // url()
:: SVGICCColor :== (String,[SVGNumber]) // (,), the list must not be empty
:: SVGLength :== (SVGNumber,SVGLengthUnit)
:: SVGLengthAdjust = Spacing | SpacingAndGlyphs
:: SVGLengthUnit = EM | EX | PX | IN | CM | MM | PT | PC | PERCENT
:: SVGLineCap = CapButt | CapRound | CapSquare | CapInherit
:: SVGLineJoin = JoinMiter | JoinRound | JoinBevel | JoinInherit
:: SVGMeetOrSlice = SVGMeet
| SVGSlice
:: SVGNumber :== String // number ::= integer | [+-]? [0-9]* "." [0-9]+
:: SVGOpacityValue :== SVGNumber // value between 0.0 (fully transparant) and 1.0 (fully opaque)
:: SVGPaint = PaintNone
| PaintCurrentColor
| PaintColor SVGColor (Maybe SVGICCColor)
| PaintFuncIRI SVGFuncIRI (Maybe SVGPaint)
| PaintInherit
:: SVGStrokeDashArray = NoDash
| DashArray ![String] // non-empty list, an element is either an SVGNumber or a percentage
| InheritDash
:: SVGStrokeDashOffset = DashOffsetLength !SVGLength // is allowed to be negative
| DashOffsetInherit
:: SVGStrokeMiterLimit = MiterLimit !SVGNumber // >= 1.0
| MiterLimitInherit
:: SVGStrokeWidth = StrokeWidthLength !SVGLength // >= 0.0
| StrokeWidthInherit
:: SVGTransform = MatrixTransform !SVGNumber !SVGNumber !SVGNumber !SVGNumber !SVGNumber !SVGNumber // matrix( )
| TranslateTransform !SVGNumber !SVGNumber // translate( )
| ScaleTransform !SVGNumber !SVGNumber // scale( )
| RotateTransform !SVGNumber !(Maybe (SVGNumber,SVGNumber)) // rotate( [ ])
| SkewXTransform !SVGNumber // skewX()
| SkewYTransform !SVGNumber // skewY()
:: SVGZoomAndPan = Disable // only sensible on outermost SVGElt: disable zooming and panning by user
| Magnify // only sensible on outermost SVGElt: enable zooming and panning by user
svgEltSize :: !SVGElt -> Int
svgAttrSize :: !SVGAttr -> Int
writeSVGTag :: !{#Char} ![HtmlAttr] ![SVGAttr] ![SVGElt] !*{#Char} !Int -> (!*{#Char},!Int)
serializeAttr :: !HtmlAttr !*{#Char} !Int -> (!*{#Char}, !Int)
serializeSVGAttr :: !SVGAttr !*{#Char} !Int -> (!*{#Char}, !Int)
instance toString HtmlTag
instance toString SVGElt
instance toString SVGAlign
instance toString SVGColor
instance toString SVGICCColor
instance toString SVGFillOpacity
instance toString SVGFillRule
instance toString SVGFuncIRI
instance toString SVGLength
instance toString SVGLengthAdjust
instance toString SVGLengthUnit
instance toString SVGLineCap
instance toString SVGLineJoin
instance toString SVGMeetOrSlice
instance toString SVGStrokeMiterLimit
instance toString SVGPaint
instance toString SVGStrokeDashArray
instance toString SVGStrokeDashOffset
instance toString SVGStrokeWidth
instance toString SVGTransform
instance toString SVGZoomAndPan
/*
* This html class makes it possible to use either strings, or html as description/message/instruction
*/
class html a
where
html :: !a -> HtmlTag
instance html String
instance html HtmlTag
instance html [a] | html a
instance html (Maybe a) | html a
//BACKWARDS COMPATIBILITY
RawText :== Html
browserFriendlySVGEltToString :: !SVGElt -> String
escapeStr :: !String -> String