
Hi, My website at http://community.haskell.org/~ndm/ is based on lots of template files, for example: http://community.haskell.org/~ndm/darcs/website/pages/catch.html (not a real HTML file, but a partial HTML file). These files all start with some metadata, and then have some templated language below, which gets combined with headers/footers to produce my website. I did this all using custom code, but I'd like to move to using Hamlet with YAML, so I can throw away lots of my custom code and so I get lots of additional features I'm currently missing because I have to hand-roll the framework myself. I couldn't find any examples of anything else doing this, so two questions: 1) I couldn't find any easy way to say "run hamlet on each of the files in this directory"? Will I have to do a getDirectoryContents in IO, lift that into Q, and then statically call hamletFile on a list? Then I'll output the HTML to file. 2) Is there an existing example of this? Writing a static site in terms of Hamlet seems like a nice idea, and I can't be the first to have thought of it. Thanks, Neil

Hello,
Hakyll [1] is a static website compiler which supports Hamlet
templates. Pages can be written in plain HTML or any other format that
Pandoc supports. It sounds a lot like what you're looking for.
[1]: http://jaspervdj.be/hakyll/
Cheers,
Jasper
On Mon, May 30, 2011 at 9:17 PM, Neil Mitchell
Hi,
My website at http://community.haskell.org/~ndm/ is based on lots of template files, for example: http://community.haskell.org/~ndm/darcs/website/pages/catch.html (not a real HTML file, but a partial HTML file).
These files all start with some metadata, and then have some templated language below, which gets combined with headers/footers to produce my website. I did this all using custom code, but I'd like to move to using Hamlet with YAML, so I can throw away lots of my custom code and so I get lots of additional features I'm currently missing because I have to hand-roll the framework myself. I couldn't find any examples of anything else doing this, so two questions:
1) I couldn't find any easy way to say "run hamlet on each of the files in this directory"? Will I have to do a getDirectoryContents in IO, lift that into Q, and then statically call hamletFile on a list? Then I'll output the HTML to file.
2) Is there an existing example of this? Writing a static site in terms of Hamlet seems like a nice idea, and I can't be the first to have thought of it.
Thanks, Neil
_______________________________________________ web-devel mailing list web-devel@haskell.org http://www.haskell.org/mailman/listinfo/web-devel

On Mon, May 30, 2011 at 10:17 PM, Neil Mitchell
Hi,
My website at http://community.haskell.org/~ndm/ is based on lots of template files, for example: http://community.haskell.org/~ndm/darcs/website/pages/catch.html (not a real HTML file, but a partial HTML file).
These files all start with some metadata, and then have some templated language below, which gets combined with headers/footers to produce my website. I did this all using custom code, but I'd like to move to using Hamlet with YAML, so I can throw away lots of my custom code and so I get lots of additional features I'm currently missing because I have to hand-roll the framework myself. I couldn't find any examples of anything else doing this, so two questions:
1) I couldn't find any easy way to say "run hamlet on each of the files in this directory"? Will I have to do a getDirectoryContents in IO, lift that into Q, and then statically call hamletFile on a list? Then I'll output the HTML to file.
Yes, that sounds like the most likely-to-succeed approach.
2) Is there an existing example of this? Writing a static site in terms of Hamlet seems like a nice idea, and I can't be the first to have thought of it.
Thanks, Neil
You may have been the first to discuss static Hamlet, but there have been some emails off-list about creating static Yesod sites, which would overlap quite a bit. I think creating such a system would be fairly easy actually: just spider a live site and download all the necessary files. With Warp/http-enumerator (or even just going straight against WAI), it should be possible to write that very trivially. In fact, I don't think it would even be Yesod-specific, so if you set up your Hamlet code as a WAI app, I would imagine it would work with such a system as well. But I'll also agree with Jasper that Hakyll is very nice. I know it has (or at least had) some level of Hamlet support, though I'm not sure what that's like today. Michael

We do something like this as part of our process. Our case is simpler but it basically involves curl'ing a large HTML file generated to hamlet/Julius as part of our iOS app build process.
On May 31, 2011, at 4:28, Michael Snoyman
On Mon, May 30, 2011 at 10:17 PM, Neil Mitchell
wrote: Hi,
My website at http://community.haskell.org/~ndm/ is based on lots of template files, for example: http://community.haskell.org/~ndm/darcs/website/pages/catch.html (not a real HTML file, but a partial HTML file).
These files all start with some metadata, and then have some templated language below, which gets combined with headers/footers to produce my website. I did this all using custom code, but I'd like to move to using Hamlet with YAML, so I can throw away lots of my custom code and so I get lots of additional features I'm currently missing because I have to hand-roll the framework myself. I couldn't find any examples of anything else doing this, so two questions:
1) I couldn't find any easy way to say "run hamlet on each of the files in this directory"? Will I have to do a getDirectoryContents in IO, lift that into Q, and then statically call hamletFile on a list? Then I'll output the HTML to file.
Yes, that sounds like the most likely-to-succeed approach.
2) Is there an existing example of this? Writing a static site in terms of Hamlet seems like a nice idea, and I can't be the first to have thought of it.
Thanks, Neil
You may have been the first to discuss static Hamlet, but there have been some emails off-list about creating static Yesod sites, which would overlap quite a bit. I think creating such a system would be fairly easy actually: just spider a live site and download all the necessary files. With Warp/http-enumerator (or even just going straight against WAI), it should be possible to write that very trivially. In fact, I don't think it would even be Yesod-specific, so if you set up your Hamlet code as a WAI app, I would imagine it would work with such a system as well.
But I'll also agree with Jasper that Hakyll is very nice. I know it has (or at least had) some level of Hamlet support, though I'm not sure what that's like today.
Michael
_______________________________________________ web-devel mailing list web-devel@haskell.org http://www.haskell.org/mailman/listinfo/web-devel
participants (4)
-
Jasper Van der Jeugt
-
Max Cantor
-
Michael Snoyman
-
Neil Mitchell