HTML and CSS Preprocessors
learn.shayhowe.com
learn.shayhowe.com
I mean, LESS/SASS add real functionality. Even CoffeeScript adds functionality to JavaScript, beyond just changing the syntax. But is there any functional advantage to use HAML? Is it actually worth half a chapter of an "advanced guide to HTML & CSS"?
(Totally my opinion, but it doesn't even look clearer or "more beautiful" to me, but maybe that's just because I'm used to HTML.)
But it is still useful to know and see there are other ways to handle to write HTML.
And that is because it is more than "markup should be beautiful". I cringe when that is stated as the only reason. Markup that is simplified can lead to easier readability and fewer mistakes. It removes the worry if you forgot to close a tag and removes them all together.
I was hesitant at first after being so used to working with HTML but I am happy as ever after making the switch. I find my time is more productive and updating the html is much quicker.
http://haml.info/docs/yardoc/file.REFERENCE.html
Filters, passing Ruby objects into it to generate classes, hell, even markup comments that don't show up in html.
Can anyone give an example of when HAML would be used in the 'real world'? I can't imagine it filling a niche that isn't covered by any of the other templating languages: what would seem most ideal is a combination of say, Jinja and HAML.
I like it in my projects mostly for how clean and easy it is to read. It takes a little bit to get used to initially but it is worth it.
BTW, both Haml and Sass go very nicely with Sinatra... ;)
[0]: https://github.com/p/shpaml-jinja [1]: http://shpaml.webfactional.com/examples
In HAML all you have to do is this...
- @items.each do |item|
%fieldset{:data => {:id => item.id, :category => item.category}}
===In ERB the equivalent would be...
<% @items.each do |item| %>
<fieldset data-id="<%= item.id %>" data-category="<%= item.category %>">
</fieldset>
<% end %>===
It's a lot cleaner in HAML, especially extrapolated out over larger views.
ERB view:
<%= render @items %>
items/_item.html.erb: <%= tag "fieldset", data: { id: item.id, category: item.category } %>For instance: try making an html element with a long list of attributes and see how it looks. Or worse, run a translate on a block of text while maintaining reasonable line lengths.
Good? Yes. Silver bullet html replacement? Lol.
<div attr1="val1, the first one"
attr2="val2, maybe this one is much longer"
attr3="you see where I'm going with this"
attr4="and so on...."
>
Div content goes here
</div>
What do you mean by "run a translate" though?Regardless of intended use cases, i cant think of a better definition.