Name: regular-web Version: 0.1 Synopsis: Generic programming for the web License: BSD3 License-file: LICENSE Category: Generics, Web Copyright: (c) Chris Eidhof Author: Chris Eidhof Maintainer: Chris Eidhof Homepage: http://github.com/chriseidhof/basil Exposed-Modules: Generics.Regular.Formlets , Generics.Regular.Views , Generics.Regular.JSON Other-Modules: Generics.Regular.Extras Build-Type: Simple hs-source-dirs: src Build-Depends: base >= 4 && < 5, mtl, xhtml, formlets == 0.6.1, applicative-extras, regular >= 0.1.0.2, fclabels >= 0.4.2, json >= 0.4.3 Description: This package implements generic functions for web programming. Based on the @regular@ library [1], we provide generic functions for generating @HTML@, @Formlets@, and @JSON@. For a larger example, see the @Example.lhs@ [2] file on github. . 1. . 2. . /Example/ . Consider the following datatypes: . > data Person = Person { > _name :: String > , _age :: Int > , _isMale :: Bool > , _place :: Place > } > data Place = Place { > _city :: String > , _country :: String > , _continent :: String > } . We can now derive a @Regular@ instance for the @Person@ datatype using Template Haskell: . > $(deriveAll ''Place "PFPlace") > $(deriveAll ''Person "PFPerson") . > > type instance PF Place = PFPlace > type instance PF Person = PFPerson . We can construct an example person: . > location :: Place > location = Place "Utrecht" "The Netherlands" "Europe" > chris :: Person > chris = Person "chris" 25 True location . > And, as an example, we can generate |HTML| and |JSON| values: . > locationHtml :: X.Html > locationHtml = ghtml location . > personHtml :: X.Html > personHtml = ghtml chris . > locationJSON :: JSValue > locationJSON = gto location