<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Jaros&#322;aw Zabie&#322;&#322;o - BLOG: Tag haml</title>
    <link>http://blog.zabiello.com/articles/tag/haml</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>moje notatki, linki, komentarze</description>
    <item>
      <title>Merb 0.5</title>
      <description>&lt;p&gt;Konkurencja Rails&#243;w przy&#347;piesza. Ezra Zygmuntowicz i jego team wypu&#347;cili &lt;a href="http://brainspl.at/articles/2008/01/10/merb-0-5-0-is-out"&gt;now&#261; wersj&#281;&lt;/a&gt; Merb&amp;#8217;a 0.5. Nowa wersja zawiera wiele usprawnie&#324;, w repozytorium zosta&#322;a oznaczona jako &amp;#8220;The big cleanup&amp;#8221;. M.in. usprawniono  wsp&#243;&#322;prac&#281; z &lt;a href="http://haml.hamptoncatlin.com/"&gt;Hamlem&lt;/a&gt; za pomoc&#261; prekompilacji i szybszego includowania hamlowych partiali. Wbudowano wsparcie dla &lt;a href="http://haml.hamptoncatlin.com/docs/rdoc/classes/Sass.html"&gt;Sass&lt;/a&gt; dodaj&#261; podkatalog &lt;code&gt;sass&lt;/code&gt; w katalogu &lt;code&gt;public&lt;/code&gt;. Przyby&#322;o te&#380; generator&#243;w kodu, &lt;a href="http://pastie.caboo.se/137630"&gt;pozbyto si&#281;&lt;/a&gt; brzydkich sta&#322;ych, itp., itd. Pojawi&#322;y si&#281; te&#380; nowe wersje gem&#243;w  &lt;code&gt;merb_datamapper&lt;/code&gt;, &lt;code&gt;merb_sequel&lt;/code&gt;, &lt;code&gt;merb_activerecord&lt;/code&gt; i &lt;code&gt;merb_helpers&lt;/code&gt;. Nowa wersja Merba zosta&#322;a nazwana &amp;#8220;Thanks Zed&amp;#8221; (w podzi&#281;kowaniu dla &lt;a href="http://www.zedshaw.com/"&gt;Zeda Shaw&lt;/a&gt;, tw&#243;rcy &lt;a href="http://mongrel.rubyforge.org/"&gt;Mongrela&lt;/a&gt;)&lt;/p&gt;</description>
      <pubDate>Thu, 10 Jan 2008 11:53:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:44f60c16-59c3-4d7a-a89d-d96d4eceade1</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2008/01/10/merb-0-5</link>
      <category>merb</category>
      <category>ruby</category>
      <category>haml</category>
    </item>
    <item>
      <title>IntelliJ IDEA dla Ruby on Rails i Haml w Netbeans 6</title>
      <description>&lt;p&gt;Powstaje coraz wi&#281;cej zaawansowanych &lt;span class="caps"&gt;IDE&lt;/span&gt; do Ruby i Rails. Znany, komercyjny &lt;span class="caps"&gt;IDE&lt;/span&gt; do Javy &lt;a href="http://www.jetbrains.com/idea/"&gt;IntelliJ &lt;span class="caps"&gt;IDEA&lt;/span&gt;&lt;/a&gt; w wersji 7 doda&#322; silne &lt;a href="http://www.jetbrains.com/idea/features/ruby_rails.html"&gt;wsparcie dla kodu Rubiego i Rails&#243;w&lt;/a&gt;. Wygl&#261;da mo&#380;e nie najgorzej ale jest p&#322;atny &lt;span class="caps"&gt;NB6&lt;/span&gt; jest darmowy). Poza tym wygl&#261;da na mniej dojrza&#322;y ni&#380; &lt;a href="http://deadlock.netbeans.org/hudson/job/ruby/"&gt;Netbeans 6&lt;/a&gt;. Ten ostatni doczeka&#322; si&#281; pierwszej implementacji szablon&#243;w &lt;a href="http://haml.hamptoncatlin.com/"&gt;Haml&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Na razie Haml dost&#281;pny jest tu tylko &lt;a href="http://mediacast.sun.com/details.jsp?id=3759"&gt;jako plugin&lt;/a&gt; kt&#243;ry trzeba pobra&#263; i doinstalowa&#263; sobie w &lt;span class="caps"&gt;NB6&lt;/span&gt; (menu: Tools -&amp;gt; Plugins -&amp;gt; Downloaded -&amp;gt; Add Plugins&amp;#8230; i wskaza&#263; na plik pobrany plik &amp;#8220;org-netbeans-modules-haml.nbm&amp;#8221;.&lt;/p&gt;</description>
      <pubDate>Sun, 21 Oct 2007 00:53:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:335edac3-d5fb-4965-bc16-4f96ba922d80</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2007/10/21/intelij-idea-haml-nb6</link>
      <category>haml</category>
      <category>netbeans</category>
      <category>edytory</category>
      <category>intelij</category>
      <category>idea</category>
      <category>ruby</category>
      <category>rails</category>
      <category>templates</category>
    </item>
    <item>
      <title>Nowy Haml 1.7</title>
      <description>&lt;p&gt;Wysz&#322;a nowa wersja szablon&#243;w Haml 1.7. &lt;a href="http://haml.hamptoncatlin.com/release-notes"&gt;Dodano par&#281; nowych mo&#380;liwo&#347;ci i co wa&#380;niejsze, znacznie przy&#347;pieszono prac&#281;&lt;/a&gt;. Cho&#263; nadal Haml jest wolniejszy od ERb to ju&#380; nie tak, jak wcze&#347;niej (wersja 2.0 ma by&#263; prawie tak samo wydajna jak ERb)&lt;/p&gt;


	&lt;p&gt;Zmieni&#322; si&#281; troch&#281; spos&#243;b instalacji. Teraz wystarczy doinstalowa&#263; &amp;#8220;gem install haml&amp;#8221; i potem odpali&#263; w konsoli komend&#281;:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_bash "&gt;haml --rails /sciezka/do/projektu/ror&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;&lt;span class="caps"&gt;BTW&lt;/span&gt;, ciekaw jestem kiedy doczekamy si&#281; implementacji Haml dla Pythona, bo &lt;a href="http://phphaml.sourceforge.net"&gt;dla &lt;span class="caps"&gt;PHP&lt;/span&gt; ju&#380; jest&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Sun, 15 Jul 2007 23:36:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:704dff94-fab5-4a22-848a-74def467a1ca</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2007/07/15/nowy-haml-1-7</link>
      <category>haml</category>
      <category>rails</category>
      <category>templates</category>
    </item>
    <item>
      <title>Typo, Haml i capture</title>
      <description>&lt;p&gt;Przez jaki&#347; czas w moim blogu, po jednej z aktualizacji kodu bloga, rozjecha&#322;y si&#281; listingi kod&#243;w. W sumie takie sytuacje si&#281; zdarzaj&#261; jak u&#380;ywa si&#281; kodu z &lt;span class="caps"&gt;SVN&lt;/span&gt; (kt&#243;rego u&#380;ywa&#263; i tak b&#281;d&#281;, bo &lt;a href="http://trac.typosphere.org/"&gt;Typo&lt;/a&gt; to &#347;wietna aplikacja do bloga i  ma sporo ciekawych mo&#380;liwo&#347;ci dost&#281;pnych tylko w wersji niestabilnej).&lt;/p&gt;


	&lt;p&gt;B&#322;&#261;d wynika&#322; z pochopnego przej&#347;cia z szablon&#243;w ERb do &lt;a href="http://blog.zabiello.com/articles/2007/01/27/haml-nast%C4%99pna-generacja-szablon%C3%B3w"&gt;Haml&lt;/a&gt;. Te drugie, s&#261; bardzo eleganckie i zwarte ale powoduj&#261; uk&#322;adanie wszystkich tag&#243;w &lt;span class="caps"&gt;HTML&lt;/span&gt; z odpowiednimi wci&#281;ciami. Typo u&#380;ywa&#322;o w listingach tagu &amp;lt;pre&amp;gt; i st&#261;d to ca&#322;e nieszcz&#281;&#347;cie.&lt;/p&gt;


	&lt;p&gt;Na szcz&#281;&#347;cie Uda&#322;o mi si&#281; problem &lt;a href="http://trac.typosphere.org/ticket/1090"&gt;zlokalizowa&#263;, naprawi&#263;&lt;/a&gt; i zg&#322;osi&#263; to autorom. Przyda&#322;a si&#281; railsowa metoda &lt;a href="http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#M000637"&gt;capture&lt;/a&gt;, kt&#243;ra wci&#261;ga dowolne fragmenty szablonu do zmiennej, kt&#243;r&#261; mo&#380;na p&#243;&#378;niej wykorzysta&#263;.&lt;/p&gt;</description>
      <pubDate>Sun, 04 Mar 2007 06:51:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:3b3fdb6a-a6ab-4aa0-a380-128c0ec6ec32</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2007/03/04/typo-haml-i-capture</link>
      <category>haml</category>
      <category>typo</category>
      <category>rails</category>
    </item>
    <item>
      <title>Haml - nast&#281;pna generacja szablon&#243;w</title>
      <description>&lt;p&gt;&lt;a href="http://haml.hamptoncatlin.com/"&gt;&lt;img src="/images/articles/haml.png" align="left" hspace="4px" /&gt;&lt;/a&gt; W zwi&#261;zku z przestawieniem si&#281; ca&#322;kowicie na najnowsz&#261; wersj&#281; &lt;a href="http://rubyonrails.org"&gt;Rails&#243;w&lt;/a&gt; (1.2.1), postanowi&#322;em przy zrobi&#263; tak&#380;e upgrade oprogramowania do mego bloga (kt&#243;ry w wersji jak&#261; mia&#322;em nie wsp&#243;&#322;pracowa&#322; z RoR 1.2.1).  Na szcz&#281;&#347;cie, dzi&#281;ki railsowym migracjom proces aktualizacji skrypt&#243;w &lt;em&gt;jak i struktury baz&lt;/em&gt;  przebieg&#322; bez problem&#243;w i niedestrukcyjnie dla danych w bazie. Typo&amp;#8221;:http://trac.typosphere.org/ zawsze by&#322; kodem troch&#281; awangardowym, wprowadzaj&#261;cym zaawansowane mechanizmy Rubiego i najnowsze pomys&#322;y Rails&#243;w. Przekona&#322;em si&#281; o tym podczas pr&#243;by modyfikacji paru szablon&#243;w. Typo zamiast dotychczasowego formatu &lt;a href="http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/"&gt;ERb&lt;/a&gt; (*.rhtml) Typo u&#380;ywa ju&#380; szablony nowej generacji &amp;#8211; &lt;a href="http://haml.hamptoncatlin.com/"&gt;Haml&lt;/a&gt;. Chc&#261;c niechc&#261;c, musia&#322;em przej&#347;&#263; szybki kurs pos&#322;ugiwania si&#281; nimi aby zmodyfikowa&#263; szablony w swoim blogu.&lt;/p&gt;


	&lt;p&gt;Moje pierwsze wra&#380;enia s&#261; bardzo pozytywne. Wystarczy&#322;o mi par&#281; minut aby ogarn&#261;&#263; sk&#322;adni&#281;. Szablon bazowy (layout) mojego bloga wygl&#261;da teraz tak (zrzut ekranu z RadRails/Eclipse, kt&#243;ry doczeka&#322; si&#281; ju&#380;  &lt;a href="http://haml.lucky-dip.net/"&gt;pluginu&lt;/a&gt;):&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://blog.zabiello.com/images/articles/haml_example.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;Mo&#380;e na pocz&#261;tku to nie wydaje si&#281; czytelne, ale po paru minutach pracy z Haml wida&#263;, &#380;e kod jest znacznie bardziej przejrzysty i kr&#243;tszy. Nie trzeba tak&#380;e zamyka&#263; tag&#243;w. Wida&#263; tu inspiracj&#281; Pythonem, gdy&#380; Haml u&#380;ywa dw&#243;ch spacji jako wyznacznika bloku. Ci, co patrzyli z niech&#281;ci&#261; na pythonowe u&#380;ywanie wci&#281;&#263; do oznaczania blok&#243;w,  b&#281;d&#261; musieli przejrze&#263; na oczy. :)&lt;/p&gt;


	&lt;p&gt;Hamlto skr&#243;t od &amp;#8220;XHTML Abstraction Markup Language&amp;#8221;. Zosta&#322; stworzony aby u&#322;atwi&#263; tworzenie czystego, dobrze zagnie&#380;d&#380;onego kodu &lt;span class="caps"&gt;HTML&lt;/span&gt;. 
 Haml umo&#380;liwia pe&#322;ny dost&#281;p do Rubiego i helper&#243;w Rails. Ale mo&#380;e by&#263; teoretycznie zastosowany jako wymiennik sk&#322;adni dla &lt;span class="caps"&gt;PHP&lt;/span&gt; czy &lt;span class="caps"&gt;JSP&lt;/span&gt;. Aktualnie  Haml to m&#322;ody projekt (powsta&#322; w maju 2006). Jest aktualnie u&#380;ywany tylko we frameworku  &lt;a href="http://rubyonrails.org"&gt;Ruby on Rails&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Haml generuje kod &lt;span class="caps"&gt;XHTML&lt;/span&gt; (czyli zgodny z &lt;span class="caps"&gt;XML&lt;/span&gt;).  Dba o odpowiednie wci&#281;cia i zagnie&#380;d&#380;enia tag&#243;w.  Zwyk&#322;e, r&#281;czne tworzenie kodu &lt;span class="caps"&gt;HTML&lt;/span&gt; jest nie tylko podatne na b&#322;&#281;dy. Jest tak&#380;e ma&#322;o czytelne. Jak do tego dodamy sk&#322;adni&#281; ERb, to si&#281; robi jeszcze mniej czytelniej. Haml jest recept&#261; zapewniaj&#261;c&#261; pe&#322;ny dost&#281;p do wszystkich mechanizm&#243;w Rubiego i Rails&#243;w ale&amp;#8230; bez zagnie&#380;d&#380;ania kodu Rubiego w kodzie &lt;span class="caps"&gt;HTML&lt;/span&gt;. Zamiast mozolnie wklepywa&#263; tagi, Haml proponuje budowanie ich w znacznie przejrzysty spos&#243;b.&lt;/p&gt;


	&lt;h2&gt;Instalacja&lt;/h2&gt;


	&lt;p&gt;Haml jest dost&#281;pny w formie pluginu do Rails&#243;w.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="punct"&gt;./&lt;/span&gt;&lt;span class="regex"&gt;script&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;plugin&lt;/span&gt; &lt;span class="ident"&gt;install&lt;/span&gt; &lt;span class="ident"&gt;svn&lt;/span&gt;&lt;span class="punct"&gt;:/&lt;/span&gt;&lt;span class="regex"&gt;&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;hamptoncatlin&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;com&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;haml&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;tags&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;stable&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Mo&#380;na te&#380; zainstalowa&#263; Haml za pomoc&#261; gems&#243;w:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;gem&lt;/span&gt; &lt;span class="ident"&gt;install&lt;/span&gt; &lt;span class="ident"&gt;haml&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Moim zdaniem &lt;a href="http://haml.hamptoncatlin.com/"&gt;Haml&lt;/a&gt; jest pierwszorz&#281;dnym kandydatem na zast&#261;pienie g&#322;&#243;wnych szablon&#243;w Rails&#243;w &amp;#8211; &lt;span class="caps"&gt;RHTML&lt;/span&gt;. Chyba zaczn&#281; ju&#380; przebudowywa&#263; wszystkie swoje szablony. :)&lt;/p&gt;


	&lt;p&gt;Appendix:&lt;/p&gt;


	&lt;p&gt;Haml s&#261; ju&#380; przygotowane dla &lt;a href="http://groups.google.com/group/haml/web/syntax-highlighting"&gt;Jedita, Eclipse/RadRails, Textmate i (G)vim&lt;/a&gt;. Wys&#322;a&#322;em informacj&#281; na list&#281; Komodo aby to te&#380; dodali.&lt;/p&gt;


	&lt;p&gt;Update 2007-01-29:&lt;/p&gt;


	&lt;p&gt;Przepisa&#322;em wszystkie szablony na &lt;a href="http://zabiello.com"&gt;mojej stronie&lt;/a&gt;  do Haml.  S&#261; po prostu &#347;wietne.&lt;/p&gt;</description>
      <pubDate>Sat, 27 Jan 2007 04:33:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:2e98e271-affc-4966-aa86-f1fe4a47ec85</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2007/01/27/haml-nast%C4%99pna-generacja-szablon%C3%B3w</link>
      <category>Ruby on Rails</category>
      <category>haml</category>
      <category>rails</category>
      <category>erb</category>
      <category>templates</category>
    </item>
  </channel>
</rss>
