[web-devel] style for html IDs in hamlet

Max Cantor mxcantor at gmail.com
Fri Apr 8 16:43:01 CEST 2011


Its not really worth changing the API, just wondering if there is a way to do it with the current API.

max

On Apr 8, 2011, at 10:39 PM, Greg Weber wrote:

> We could have something like
> 
> class DomId a where
>   toDomId :: a -> Text
> 
> class DomClass a where
>   toDomClass :: a -> Text
> 
> That hamlet calls on id and class insertions. Michael would no better if that is possible with the hamlet internals.
> 
> 
> On Fri, Apr 8, 2011 at 7:03 AM, Max Cantor <mxcantor at gmail.com> wrote:
> In an effort to get more type-checked goodness in hamlet, I started using string constants for all my dom IDs and classes.  We're not using the newIdent function because I want control over what the IDs and classes will be named.
> 
> I wrote up a little typeclass as such:
> 
> class CustomIdentString a where jqVal :: a -> String; idVal :: a -> String
> 
> newtype CustomIdentCls = MkCls String
> instance CustomIdentString CustomIdentCls where
>  jqVal (MkCls s) = "." ++ s; idVal (MkCls s) = s;
> 
> newtype CustomIdentId = MkId String
> instance CustomIdentString CustomIdentId where
>  jqVal (MkId s) = "#" ++ s; idVal (MkId s) = s;
> 
> This way, I can refer to divs in javascript using:
> $("#{jqVal myId}").foo..
> 
> And create the elements in hamlet using
> <div ##{idVal myId}> ...
> 
> I'm wondering is there a datatype for IDs and Classes that I can use to make the IDs and Classes directly so that:
> <div .#{foo myId}> and <div ##{foo myCls}>
> would fail to typecheck?
> 
> In general, are there any good, safe ways to do this instead of just unwrapping to strings?
> 
> max
> _______________________________________________
> web-devel mailing list
> web-devel at haskell.org
> http://www.haskell.org/mailman/listinfo/web-devel
> 




More information about the web-devel mailing list