suavemente-0.2.0.0: An applicative functor that seamlessly talks to HTML inputs.

Safe HaskellNone
LanguageHaskell2010

Web.Suavemente

Contents

Synopsis

Primary Stuff

data Suave a Source #

An applicative functor capable of getting input from an HTML page.

Instances
Functor Suave Source # 
Instance details

Defined in Web.Suavemente.Types

Methods

fmap :: (a -> b) -> Suave a -> Suave b #

(<$) :: a -> Suave b -> Suave a #

Applicative Suave Source # 
Instance details

Defined in Web.Suavemente.Types

Methods

pure :: a -> Suave a #

(<*>) :: Suave (a -> b) -> Suave a -> Suave b #

liftA2 :: (a -> b -> c) -> Suave a -> Suave b -> Suave c #

(*>) :: Suave a -> Suave b -> Suave b #

(<*) :: Suave a -> Suave b -> Suave a #

data SomeSuave where Source #

An existentialized Suave.

Constructors

SomeSuave :: (a -> Markup) -> Suave a -> SomeSuave 

data Input a Source #

An applicative functor can introduce new markup, and hook it up to the event stream.

Instances
Functor Input Source # 
Instance details

Defined in Web.Suavemente.Types

Methods

fmap :: (a -> b) -> Input a -> Input b #

(<$) :: a -> Input b -> Input a #

Applicative Input Source # 
Instance details

Defined in Web.Suavemente.Types

Methods

pure :: a -> Input a #

(<*>) :: Input (a -> b) -> Input a -> Input b #

liftA2 :: (a -> b -> c) -> Input a -> Input b -> Input c #

(*>) :: Input a -> Input b -> Input b #

(<*) :: Input a -> Input b -> Input a #

suavemente :: (a -> Markup) -> Suave a -> IO () Source #

Run a Suave computation by spinning up its webpage at localhost:8080.

suavementely :: Map String SomeSuave -> IO () Source #

Run a Suave computation by spinning up its webpage at localhost:8080.

Inputs

textbox Source #

Arguments

:: String

label

-> String

initial value

-> Suave String 

Create an input driven by an HTML textbox.

checkbox :: String -> Bool -> Suave Bool Source #

Create an input driven by an HTML checkbox.

slider Source #

Arguments

:: (ToMarkup a, Num a, FromJSON a) 
=> String

label

-> a

min

-> a

max

-> a

initial value

-> Suave a 

Create an input driven by an HTML slider.

realSlider Source #

Arguments

:: (ToMarkup a, Num a, Real a, FromJSON a) 
=> String

label

-> a

min

-> a

max

-> a

step

-> a

initial value

-> Suave a 

Create an input driven by an HTML slider, whose domain is the real numbers.

dropdown Source #

Arguments

:: (FromJSON a, ToMarkup a, Eq a) 
=> String

label

-> [(String, a)] 
-> a 
-> Suave a 

Create an input driven by an HTML select.

enumDropdown Source #

Arguments

:: (FromJSON a, ToMarkup a, Enum a, Bounded a, Eq a) 
=> String

label

-> a 
-> Suave a 

Create an input for enums driven by an HTML select.

colorPicker Source #

Arguments

:: (Ord a, Floating a, RealFrac a) 
=> String

label

-> Colour a

initial value

-> Suave (Colour a) 

Create an input driven by the HTML input, type=color.

Making New Inputs

mkInput Source #

Arguments

:: (Value -> Parser a) 
-> (String -> a -> Markup)

Function to construct the HTML element. The first parameter is what should be used for the element's id attribute.

-> a

The input's initial value.

-> Suave a 

Constructor for building Suave inputs that are backed by HTML elements.

showMarkup :: ToMarkup a => a -> String Source #

Get a String representation of a markup-able type. Useful for constructing elements via quasiquotation.

Reexports

type Markup = MarkupM () #

Simplification of the MarkupM datatype.

class ToMarkup a where #

Class allowing us to use a single function for Markup values

Minimal complete definition

toMarkup

Methods

toMarkup :: a -> Markup #

Convert a value to Markup.

preEscapedToMarkup :: a -> Markup #

Convert a value to Markup without escaping

Instances
ToMarkup Bool 
Instance details

Defined in Text.Blaze

ToMarkup Char 
Instance details

Defined in Text.Blaze

ToMarkup Double 
Instance details

Defined in Text.Blaze

ToMarkup Float 
Instance details

Defined in Text.Blaze

ToMarkup Int 
Instance details

Defined in Text.Blaze

ToMarkup Int32 
Instance details

Defined in Text.Blaze

ToMarkup Int64 
Instance details

Defined in Text.Blaze

ToMarkup Integer 
Instance details

Defined in Text.Blaze

ToMarkup Natural 
Instance details

Defined in Text.Blaze

ToMarkup Word 
Instance details

Defined in Text.Blaze

ToMarkup Word32 
Instance details

Defined in Text.Blaze

ToMarkup Word64 
Instance details

Defined in Text.Blaze

ToMarkup String 
Instance details

Defined in Text.Blaze

ToMarkup Builder 
Instance details

Defined in Text.Blaze

ToMarkup Text 
Instance details

Defined in Text.Blaze

ToMarkup Text 
Instance details

Defined in Text.Blaze

ToMarkup Markup 
Instance details

Defined in Text.Blaze

ToMarkup [Markup] 
Instance details

Defined in Text.Blaze

qc :: QuasiQuoter #

QuasiQuoter for interpolating '{expr}' into a string literal. The pattern portion is undefined.

q :: QuasiQuoter #

QuasiQuoter for a non-interpolating string literal. The pattern portion is undefined.