HAML makes me love and hate Python

I'm just a rails newbie, but I thought I would point out a small observation.

About a year ago, I was having real trouble making the decision about whether I should learn Ruby or Python. I finally settled on Ruby, one of the reasons being that I didn't want my language to tell me how whitespace should work. (Although the main reason was how object oriented Ruby is)

Although I've never really used Python, I now love it with all my heart thanks to HAML, lol. The whole whitespace thing is amazing in HAML. It is infinitely superior to regular HTML. It's so much cleaner, easier to read, easy to write. It's just amazing. I can't believe I actually have to write "end" after all of my Ruby blocks. I'm almost tempted to write Ruby in HAML so I don't have to do that, lol.

It makes me think that perhaps I misjudged Python, or too quickly dismissed its use of whitespace.

Now, to the flip side of the coin.

I hate HAML with a passion. I can't stand it. The god damn whitespace makes it almost impossible to edit. Although it's easy to write, if you ever make any changes, or want to copy and paste anything, it's i- m-p-o-s-s-i-b-l-e. If you make one change, you may have to re-indent your entire file. Oh my god, I hate it so much.

I couldn't imagine writing an entire program in such a manner. How do Python people stand it? Do they just have good editors? We could really use a HAML editor, I think.

Okay, I'm done with my rants. Oh, and the whitespace thing isn't enough to make me go back to HTML. I will never write HTML again.

Philip

I'm just a rails newbie, but I thought I would point out a small observation.

<snip>

Okay, I'm done with my rants. Oh, and the whitespace thing isn't enough to make me go back to HTML. I will never write HTML again.

Philip

It's funny you rant this way. I have been thinking about HAML and how much I'd like to use it, but I've got this thing about indentation. As long as I've been programming, roughly 13 years, I've preferred 4 space tabs over everything else. I've tried 2 spaces, 2 space tabs, 4 spaces, and a few other odd configurations, but I always come back to 4 space tabs. So I won't even try HAML if it *forces* me to use 2 spaces. I have, however, wondered if I could hack it to accept tabs. I just don't know if I'm talented enough to do that.

*sigh*

That's the problem with being stubborn: I'd rather spend more time than necessary doing something because I'm set in my ways. You know what some people say about old dogs that can't be taught new tricks...eventually they get shot.

Peace, Phillip

Neapolitan ice cream must really drive you crazy. :wink:

It occurs to me to include the HAML that I just wrote that spawned this rant, just in case anyone's curious. It runs this page http://brocoum.com/voter/startrekvoyager/episodes that allows people to vote on their favorite Star Trek: Voyager episodes.

- if @category.items.size > 0   %table.sortable     %thead       %tr         %th.sortfirstasc.number Net Votes         - for header in @category.headers.split('::')           %th.text= header         %th.nosort= "?"         %th{:class => "nosort", :style => "width: 100px;"} Cast Vote     %tbody       - for item in @category.items         %tr           %td             %div{:class => "netVotes", :id => "netVotes_#{item.id}"}= item.net_votes           - for field in item.fields.split('::')             %td= field           %td             - if item.tooltip               - tooltip(:id => item.id) do                 = item.tooltip           %td             - unless item.votes.find_by_ip_address(request.remote_ip)               %div{:id => "promoteDemote_#{item.id}"}                 - form_remote_tag(:url => {:controller => :items, :action => :vote, :id => item, :value => 1}, :before => "beforeVote(#{item.id})", :after => "afterVote(#{item.id}, 1)") do                   = submit_tag "+", :class => "promoteDemote promote"                 - form_remote_tag(:url => {:controller => :items, :action => :vote, :id => item, :value => -1}, :before => "beforeVote(#{item.id})", :after => "afterVote(#{item.id}, -1)") do                   = submit_tag "-", :class => "promoteDemote demote" - else   This category is empty.

Also, I do like Neapolitan ice cream, but only because I love ice cream in general :slight_smile:

I absolutely love Haml too, we're converting everything over and it's so much cleaner.

I do hear you regarding the making modifications issue, that bugs me too at times. I think it is mostly an editor issue and while a dedicated Haml editor would be great I think it could probably be solved with some Haml bundle support in popular editors.

While I don't think they handle auto-indentation when changing files, I know there are bundles for textmate and netbeans.

Philip Brocoum wrote:

I couldn't imagine writing an entire program in such a manner. How do Python people stand it? Do they just have good editors?

Having a good editor is critical if you do this stuff for a living. In case someone else stumbles on this post;

Vi:

- go to start of line that you want to indent/outdent - hit shift+v - go down to the last line you want to indent/outdent - hit < to outdent hit > to indent

Textmate:

- go to start of line that you want to indent/outdent - hold down shift and move to the last line you want to indent/outdent - hit cmd+[ to outdent, cmd+] to indent

Emacs:

- go to start of line that you want to indent/outdent - hit ctrl+space - go down to the last line you want to indent/outdent - hit ctrl+<num> where <num> is the number of spaces you want to indent/outdent - hit ctrl+x <tab>

2/3 editors are cross-platform, so you should be all set regardless of your OS.

-berto.