Text.XHtml.Strict

xhtml-3000.2.2: An XHTML combinator library

Safe Haskell | Safe
Language | Haskell2010

Text.XHtml.Strict

Contents

- Data types
- Classes
- Primitives and basic combinators
- Rendering
- Elements in XHTML Strict
- Attributes in XHTML Strict
- Converting strings to HTML
- Html abbreviations
- Hotlinks
- Lists
- Forms

Description

Produces XHTML 1.0 Strict.

Synopsis

- data Html
- data HtmlAttr
- class HTML a where
- class ADDATTRS a where
- class CHANGEATTRS a where
- (<<) :: HTML a => (Html -> b) -> a -> b
- concatHtml :: HTML a => [a] -> Html
- (+++) :: (HTML a, HTML b) => a -> b -> Html
- noHtml :: Html
- isNoHtml :: Html -> Bool
- tag :: String -> Html -> Html
- itag :: String -> Html
- htmlAttrPair :: HtmlAttr -> (String, String)
- emptyAttr :: String -> HtmlAttr
- intAttr :: String -> Int -> HtmlAttr
- strAttr :: String -> String -> HtmlAttr
- htmlAttr :: String -> Html -> HtmlAttr
- primHtml :: String -> Html
- stringToHtmlString :: String -> String
- docType :: String
- showHtml :: HTML html => html -> String
- renderHtml :: HTML html => html -> String
- renderHtmlWithLanguage :: HTML html => String -> html -> String
- prettyHtml :: HTML html => html -> String
- showHtmlFragment :: HTML html => html -> String
- renderHtmlFragment :: HTML html => html -> String
- prettyHtmlFragment :: HTML html => html -> String
- abbr :: Html -> Html
- acronym :: Html -> Html
- address :: Html -> Html
- anchor :: Html -> Html
- area :: Html
- bdo :: Html -> Html
- big :: Html -> Html
- blockquote :: Html -> Html
- body :: Html -> Html
- bold :: Html -> Html
- br :: Html
- button :: Html -> Html
- caption :: Html -> Html
- cite :: Html -> Html
- col :: Html -> Html
- colgroup :: Html -> Html
- del :: Html -> Html
- ddef :: Html -> Html
- define :: Html -> Html
- dlist :: Html -> Html
- dterm :: Html -> Html
- emphasize :: Html -> Html
- fieldset :: Html -> Html
- form :: Html -> Html
- h1 :: Html -> Html
- h2 :: Html -> Html
- h3 :: Html -> Html
- h4 :: Html -> Html
- h5 :: Html -> Html
- h6 :: Html -> Html
- header :: Html -> Html
- hr :: Html
- image :: Html
- input :: Html
- ins :: Html -> Html
- italics :: Html -> Html
- keyboard :: Html -> Html
- label :: Html -> Html
- legend :: Html -> Html
- li :: Html -> Html
- meta :: Html
- noscript :: Html -> Html
- object :: Html -> Html
- olist :: Html -> Html
- optgroup :: Html -> Html
- option :: Html -> Html
- paragraph :: Html -> Html
- param :: Html
- pre :: Html -> Html
- quote :: Html -> Html
- sample :: Html -> Html
- script :: Html -> Html
- select :: Html -> Html
- small :: Html -> Html
- strong :: Html -> Html
- style :: Html -> Html
- sub :: Html -> Html
- sup :: Html -> Html
- table :: Html -> Html
- tbody :: Html -> Html
- td :: Html -> Html
- textarea :: Html -> Html
- tfoot :: Html -> Html
- th :: Html -> Html
- thead :: Html -> Html
- thebase :: Html
- thecode :: Html -> Html
- thediv :: Html -> Html
- thehtml :: Html -> Html
- thelink :: Html -> Html
- themap :: Html -> Html
- thespan :: Html -> Html
- thetitle :: Html -> Html
- tr :: Html -> Html
- tt :: Html -> Html
- ulist :: Html -> Html
- variable :: Html -> Html
- action :: String -> HtmlAttr
- align :: String -> HtmlAttr
- alt :: String -> HtmlAttr
- altcode :: String -> HtmlAttr
- archive :: String -> HtmlAttr
- base :: String -> HtmlAttr
- border :: Int -> HtmlAttr
- bordercolor :: String -> HtmlAttr
- cellpadding :: Int -> HtmlAttr
- cellspacing :: Int -> HtmlAttr
- checked :: HtmlAttr
- codebase :: String -> HtmlAttr
- cols :: String -> HtmlAttr
- colspan :: Int -> HtmlAttr
- content :: String -> HtmlAttr
- coords :: String -> HtmlAttr
- disabled :: HtmlAttr
- enctype :: String -> HtmlAttr
- height :: String -> HtmlAttr
- href :: String -> HtmlAttr
- hreflang :: String -> HtmlAttr
- httpequiv :: String -> HtmlAttr
- identifier :: String -> HtmlAttr
- ismap :: HtmlAttr
- lang :: String -> HtmlAttr
- maxlength :: Int -> HtmlAttr
- method :: String -> HtmlAttr
- multiple :: HtmlAttr
- name :: String -> HtmlAttr
- nohref :: HtmlAttr
- rel :: String -> HtmlAttr
- rev :: String -> HtmlAttr
- rows :: String -> HtmlAttr
- rowspan :: Int -> HtmlAttr
- rules :: String -> HtmlAttr
- selected :: HtmlAttr
- shape :: String -> HtmlAttr
- size :: String -> HtmlAttr
- src :: String -> HtmlAttr
- theclass :: String -> HtmlAttr
- thefor :: String -> HtmlAttr
- thestyle :: String -> HtmlAttr
- thetype :: String -> HtmlAttr
- title :: String -> HtmlAttr
- usemap :: String -> HtmlAttr
- valign :: String -> HtmlAttr
- value :: String -> HtmlAttr
- width :: String -> HtmlAttr
- stringToHtml :: String -> Html
- lineToHtml :: String -> Html
- linesToHtml :: [String] -> Html
- primHtmlChar :: String -> Html
- copyright :: Html
- spaceHtml :: Html
- bullet :: Html
- p :: Html -> Html
- type URL = String
- data HotLink = HotLink {
  - hotLinkURL :: URL
  - hotLinkContents :: Html
  - hotLinkAttributes :: [HtmlAttr]
  }
- hotlink :: URL -> Html -> HotLink
- ordList :: HTML a => [a] -> Html
- unordList :: HTML a => [a] -> Html
- defList :: (HTML a, HTML b) => [(a, b)] -> Html
- widget :: String -> String -> [HtmlAttr] -> Html
- checkbox :: String -> String -> Html
- hidden :: String -> String -> Html
- radio :: String -> String -> Html
- reset :: String -> String -> Html
- submit :: String -> String -> Html
- password :: String -> Html
- textfield :: String -> Html
- afile :: String -> Html
- clickmap :: String -> Html
- menu :: String -> [Html] -> Html
- gui :: String -> Html -> Html

# Data types

data Html Source #

Instances

Show Html # |
Methods showsPrec :: Int -> Html -> ShowS Source # show :: Html -> String Source # showList :: [Html] -> ShowS Source #
Semigroup Html # | Since: 3000.2.2
Methods (<>) :: Html -> Html -> Html Source # sconcat :: NonEmpty Html -> Html Source # stimes :: Integral b => b -> Html -> Html Source #
Monoid Html # |
Methods mempty :: Html Source # mappend :: Html -> Html -> Html Source # mconcat :: [Html] -> Html Source #
CHANGEATTRS Html # |
Methods changeAttrs :: Html -> ([HtmlAttr] -> [HtmlAttr]) -> Html Source #
ADDATTRS Html # |
Methods (!) :: Html -> [HtmlAttr] -> Html Source #
HTML Html # |
Methods toHtml :: Html -> Html Source # toHtmlFromList :: [Html] -> Html Source #
HTMLTABLE Html # |
Methods cell :: Html -> HtmlTable Source #

data HtmlAttr Source #

Attributes with name and value.

Instances

Show HtmlAttr # |
Methods showsPrec :: Int -> HtmlAttr -> ShowS Source # show :: HtmlAttr -> String Source # showList :: [HtmlAttr] -> ShowS Source #

# Classes

class HTML a where Source #

HTML is the class of things that can be validly put inside an HTML tag. So this can be one or more `Html` elements, or a `String`, for example.

Minimal complete definition

toHtml

Methods

toHtml :: a -> Html Source #

toHtmlFromList :: [a] -> Html Source #

Instances

HTML Char # |
Methods toHtml :: Char -> Html Source # toHtmlFromList :: [Char] -> Html Source #
HTML Html # |
Methods toHtml :: Html -> Html Source # toHtmlFromList :: [Html] -> Html Source #
HTML HotLink # |
Methods toHtml :: HotLink -> Html Source # toHtmlFromList :: [HotLink] -> Html Source #
HTML HtmlTable # |
Methods toHtml :: HtmlTable -> Html Source # toHtmlFromList :: [HtmlTable] -> Html Source #
HTML HtmlTree # |
Methods toHtml :: HtmlTree -> Html Source # toHtmlFromList :: [HtmlTree] -> Html Source #
HTML a => HTML [a] # |
Methods toHtml :: [a] -> Html Source # toHtmlFromList :: [[a]] -> Html Source #
HTML a => HTML (Maybe a) # |
Methods toHtml :: Maybe a -> Html Source # toHtmlFromList :: [Maybe a] -> Html Source #

class ADDATTRS a where Source #

Minimal complete definition

(!)

Methods

(!) :: a -> [HtmlAttr] -> a infixl 8 Source #

Instances

ADDATTRS Html # |
Methods (!) :: Html -> [HtmlAttr] -> Html Source #
ADDATTRS HotLink # |
Methods (!) :: HotLink -> [HtmlAttr] -> HotLink Source #
ADDATTRS b => ADDATTRS (a -> b) # |
Methods (!) :: (a -> b) -> [HtmlAttr] -> a -> b Source #

class CHANGEATTRS a where Source #

CHANGEATTRS is a more expressive alternative to ADDATTRS

Minimal complete definition

changeAttrs

Methods

changeAttrs :: a -> ([HtmlAttr] -> [HtmlAttr]) -> a Source #

Instances

CHANGEATTRS Html # |
Methods changeAttrs :: Html -> ([HtmlAttr] -> [HtmlAttr]) -> Html Source #
CHANGEATTRS b => CHANGEATTRS (a -> b) # |
Methods changeAttrs :: (a -> b) -> ([HtmlAttr] -> [HtmlAttr]) -> a -> b Source #

# Primitives and basic combinators

(<<) infixr 7 Source #

Arguments

:: HTML a |
=> (Html -> b) | Parent
-> a | Child
-> b |

Put something inside an HTML element.

concatHtml :: HTML a => [a] -> Html Source #

(+++) :: (HTML a, HTML b) => a -> b -> Html infixr 2 Source #

Create a piece of HTML which is the concatenation of two things which can be made into HTML.

noHtml :: Html Source #

An empty piece of HTML.

isNoHtml :: Html -> Bool Source #

Checks whether the given piece of HTML is empty.

tag Source #

Arguments

:: String | Element name
-> Html | Element contents
-> Html |

Constructs an element with a custom name.

itag :: String -> Html Source #

Constructs an element with a custom name, and without any children.

htmlAttrPair :: HtmlAttr -> (String, String) Source #

emptyAttr :: String -> HtmlAttr Source #

intAttr :: String -> Int -> HtmlAttr Source #

strAttr :: String -> String -> HtmlAttr Source #

htmlAttr :: String -> Html -> HtmlAttr Source #

primHtml :: String -> Html Source #

This is not processed for special chars. use stringToHtml or lineToHtml instead, for user strings, because they understand special chars, like ``<``.

stringToHtmlString :: String -> String Source #

Processing Strings into Html friendly things.

docType :: String Source #

The `DOCTYPE` for XHTML 1.0 Strict.

# Rendering

showHtml :: HTML html => html -> String Source #

Output the HTML without adding newlines or spaces within the markup. This should be the most time and space efficient way to render HTML, though the ouput is quite unreadable.

renderHtml :: HTML html => html -> String Source #

Outputs indented HTML. Because space matters in HTML, the output is quite messy.

renderHtmlWithLanguage Source #

Arguments

:: HTML html |
=> String | The code of the "dominant" language of the webpage.
-> html | All the `Html`, including a header.
-> String |

Outputs indented XHTML. Because space matters in HTML, the output is quite messy.

prettyHtml :: HTML html => html -> String Source #

Outputs indented HTML, with indentation inside elements. This can change the meaning of the HTML document, and is mostly useful for debugging the HTML output. The implementation is inefficient, and you are normally better off using `showHtml` or `renderHtml`.

showHtmlFragment :: HTML html => html -> String Source #

Render a piece of HTML without adding a DOCTYPE declaration or root element. Does not add any extra whitespace.

renderHtmlFragment :: HTML html => html -> String Source #

Render a piece of indented HTML without adding a DOCTYPE declaration or root element. Only adds whitespace where it does not change the meaning of the document.

prettyHtmlFragment :: HTML html => html -> String Source #

Render a piece of indented HTML without adding a DOCTYPE declaration or a root element. The indentation is done inside elements. This can change the meaning of the HTML document, and is mostly useful for debugging the HTML output. The implementation is inefficient, and you are normally better off using `showHtmlFragment` or `renderHtmlFragment`.

# Elements in XHTML Strict

abbr :: Html -> Html Source #

acronym :: Html -> Html Source #

address :: Html -> Html Source #

anchor :: Html -> Html Source #

area :: Html Source #

bdo :: Html -> Html Source #

big :: Html -> Html Source #

blockquote :: Html -> Html Source #

body :: Html -> Html Source #

bold :: Html -> Html Source #

br :: Html Source #

button :: Html -> Html Source #

caption :: Html -> Html Source #

cite :: Html -> Html Source #

col :: Html -> Html Source #

colgroup :: Html -> Html Source #

del :: Html -> Html Source #

ddef :: Html -> Html Source #

define :: Html -> Html Source #

dlist :: Html -> Html Source #

dterm :: Html -> Html Source #

emphasize :: Html -> Html Source #

fieldset :: Html -> Html Source #

form :: Html -> Html Source #

h1 :: Html -> Html Source #

h2 :: Html -> Html Source #

h3 :: Html -> Html Source #

h4 :: Html -> Html Source #

h5 :: Html -> Html Source #

h6 :: Html -> Html Source #

header :: Html -> Html Source #

hr :: Html Source #

image :: Html Source #

input :: Html Source #

ins :: Html -> Html Source #

italics :: Html -> Html Source #

keyboard :: Html -> Html Source #

label :: Html -> Html Source #

legend :: Html -> Html Source #

li :: Html -> Html Source #

meta :: Html Source #

noscript :: Html -> Html Source #

object :: Html -> Html Source #

olist :: Html -> Html Source #

optgroup :: Html -> Html Source #

option :: Html -> Html Source #

paragraph :: Html -> Html Source #

param :: Html Source #

pre :: Html -> Html Source #

quote :: Html -> Html Source #

sample :: Html -> Html Source #

script :: Html -> Html Source #

select :: Html -> Html Source #

small :: Html -> Html Source #

strong :: Html -> Html Source #

style :: Html -> Html Source #

sub :: Html -> Html Source #

sup :: Html -> Html Source #

table :: Html -> Html Source #

tbody :: Html -> Html Source #

td :: Html -> Html Source #

textarea :: Html -> Html Source #

tfoot :: Html -> Html Source #

th :: Html -> Html Source #

thead :: Html -> Html Source #

thebase :: Html Source #

thecode :: Html -> Html Source #

thediv :: Html -> Html Source #

thehtml :: Html -> Html Source #

thelink :: Html -> Html Source #

themap :: Html -> Html Source #

thespan :: Html -> Html Source #

thetitle :: Html -> Html Source #

tr :: Html -> Html Source #

tt :: Html -> Html Source #

ulist :: Html -> Html Source #

variable :: Html -> Html Source #

# Attributes in XHTML Strict

action :: String -> HtmlAttr Source #

align :: String -> HtmlAttr Source #

alt :: String -> HtmlAttr Source #

altcode :: String -> HtmlAttr Source #

archive :: String -> HtmlAttr Source #

base :: String -> HtmlAttr Source #

border :: Int -> HtmlAttr Source #

bordercolor :: String -> HtmlAttr Source #

cellpadding :: Int -> HtmlAttr Source #

cellspacing :: Int -> HtmlAttr Source #

checked :: HtmlAttr Source #

codebase :: String -> HtmlAttr Source #

cols :: String -> HtmlAttr Source #

colspan :: Int -> HtmlAttr Source #

content :: String -> HtmlAttr Source #

coords :: String -> HtmlAttr Source #

disabled :: HtmlAttr Source #

enctype :: String -> HtmlAttr Source #

height :: String -> HtmlAttr Source #

href :: String -> HtmlAttr Source #

hreflang :: String -> HtmlAttr Source #

httpequiv :: String -> HtmlAttr Source #

identifier :: String -> HtmlAttr Source #

ismap :: HtmlAttr Source #

lang :: String -> HtmlAttr Source #

maxlength :: Int -> HtmlAttr Source #

method :: String -> HtmlAttr Source #

multiple :: HtmlAttr Source #

name :: String -> HtmlAttr Source #

nohref :: HtmlAttr Source #

rel :: String -> HtmlAttr Source #

rev :: String -> HtmlAttr Source #

rows :: String -> HtmlAttr Source #

rowspan :: Int -> HtmlAttr Source #

rules :: String -> HtmlAttr Source #

selected :: HtmlAttr Source #

shape :: String -> HtmlAttr Source #

size :: String -> HtmlAttr Source #

src :: String -> HtmlAttr Source #

theclass :: String -> HtmlAttr Source #

thefor :: String -> HtmlAttr Source #

thestyle :: String -> HtmlAttr Source #

thetype :: String -> HtmlAttr Source #

title :: String -> HtmlAttr Source #

usemap :: String -> HtmlAttr Source #

valign :: String -> HtmlAttr Source #

value :: String -> HtmlAttr Source #

width :: String -> HtmlAttr Source #

# Converting strings to HTML

stringToHtml :: String -> Html Source #

Convert a `String` to `Html`, converting characters that need to be escaped to HTML entities.

lineToHtml :: String -> Html Source #

This converts a string, but keeps spaces as non-line-breakable.

linesToHtml :: [String] -> Html Source #

This converts a string, but keeps spaces as non-line-breakable, and adds line breaks between each of the strings in the input list.

# Html abbreviations

primHtmlChar :: String -> Html Source #

copyright :: Html Source #

Copyright sign.

spaceHtml :: Html Source #

Non-breaking space.

bullet :: Html Source #

p :: Html -> Html Source #

Same as `paragraph`.

# Hotlinks

type URL = String Source #

data HotLink Source #

Constructors

HotLink |
Fields hotLinkURL :: URL hotLinkContents :: Html hotLinkAttributes :: [HtmlAttr]

Instances

Show HotLink # |
Methods showsPrec :: Int -> HotLink -> ShowS Source # show :: HotLink -> String Source # showList :: [HotLink] -> ShowS Source #
ADDATTRS HotLink # |
Methods (!) :: HotLink -> [HtmlAttr] -> HotLink Source #
HTML HotLink # |
Methods toHtml :: HotLink -> Html Source # toHtmlFromList :: [HotLink] -> Html Source #

hotlink :: URL -> Html -> HotLink Source #

# Lists

ordList :: HTML a => [a] -> Html Source #

unordList :: HTML a => [a] -> Html Source #

defList :: (HTML a, HTML b) => [(a, b)] -> Html Source #

# Forms

widget :: String -> String -> [HtmlAttr] -> Html Source #

checkbox :: String -> String -> Html Source #

hidden :: String -> String -> Html Source #

radio :: String -> String -> Html Source #

reset :: String -> String -> Html Source #

submit :: String -> String -> Html Source #

password :: String -> Html Source #

textfield :: String -> Html Source #

afile :: String -> Html Source #

clickmap :: String -> Html Source #

menu :: String -> [Html] -> Html Source #

Deprecated: menu generates strange XHTML, and is not flexible enough. Roll your own that suits your needs.

gui :: String -> Html -> Html Source #