
Hello,
Formlets is deprecated in favor of digestive functors. If you have not looked at the digestive-functors package I highly recommend that you do. It fixes a lot of little issues that formlets had -- but is basically the same
Hi Jeremy
If the signature of a formlet or digestive functor is
View *format m a *
with `*m*` a monad, `*a*` the resulting value and `*format*` the
formatting (Usually HTML)
then the signatures of the operators for Text.XHtml format are:
*(<<<) :: Monad m => (Html -> Html) -> View Html m a -> View Html m a
(<++) :: Monad m => Html -> View Html m a -> View Html m a
(++>) :: Monad m => View Html m a -> Html -> View Html m a
(<+>) :: Monad m => View Html m a -> View Html m b -> View Html m
(Either a' b')*
My mplementation is tightly integrated with other non related
functionalities in an app server that I´m developing so a translation to
diggestive functors is not trivial, but I too would love to have this
integrated in digestive functors for the shake of modularity.
2012/2/3 Jeremy Shaw
The (<<<) operator is a already a standard operator in Control.Category /
Control.Arrow. So, it is probably confusing to reuse that symbol for something else…
The digestive functors library defines two new operators (++>) and (<++)
which are somewhat related to what you are trying to do.
In HTML, the <label> tag is supposed to reference the 'id' of the field
is it labeling. For example, you might have:
<label for="username">Username: </label>
name="username" value="">
In formlets, there was no way to do that because the 'ids' are not
accessible to the user. In digestive functors you can use the ++> operator to 'share' an id between to elements. That allows you to write:
label "Username :" ++> inputText Nothing
Anyway, I would love to see:
a) your new combinators renamed and reimplemented for digestive-functors b) the type signatures of these new operators
With out the type signatures it is a bit hard to decipher what your new
operators are actually doing..
But, I love seeing any new improvements to the
formlets/digestive-functors concept!
- jeremy
On Feb 2, 2012, at 6:50 PM, Alberto G. Corona wrote:
I came across the idea that is easy to define additional operators to Text.FormLets for adding custom HTML formatting. Had anyone tried that?
For example to enclose the Prod formulary in a Table using Text.XHtml tags. I defined additional operators <<< and <++ for enclosing and prepending Html to a formLet, respectively:
data Prod= Prod{pname :: String, pprice :: Int}
getProd= table <<< ( Prod <$> tr <<< (td << "enter the name" <++ td <<< getString
(pname <$> mp))
<*> tr <<< (td << "enter the price" <++ td <<< getInt
( pprice <$> mp)))
even:
p << "paragraph" <++ getProd ++> (more Html stuff)
is possible
or even it is possible an operator <+>
getProd <+> someOtherStuff
to return Either Prod OtherStuff
I did it in my own version of FormLets. So It is too heavy to put here a running example. It is part of a package that I will upload soon to hackage.
This also may work for embedding formLets in other haskell HTML formats besides Text.XHtml.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe