Adding Html formatting to formlets

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.

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 thing. 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><input text="text" id="username" 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

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
participants (2)
-
Alberto G. Corona
-
Jeremy Shaw