<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.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 erb</title>
    <link>http://blog.zabiello.com/articles/tag/erb</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>moje notatki, linki, komentarze</description>
    <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>
