Examples
1 get the wave2 automatic quoting
3.1 filters javascript
3.2 filters css
3.3 filters plain
3.4 filters escaped
4.1 loops foreach
4.2 if then else
4.3 loops for
5 how php to haml handles attributes
6 (conditional) comments
Example: 1 get the wave.haml
HAML (written by a designer or programmer)%h2 That's the wave - get it
%div
%p
indentation represents relation %p
is indented more than the %div
thus its a child of it.
Same applies to this text.
%p within a p tag
%p
PHP-TO-HAML get's out of the way.
It helps you focus on your real job rather
than on nasty PHP details
HTML (generated by the resulting PHP code)
<h2> That's the wave - get it </h2> <div> <p>indentation represents relation %p is indented more than the %div thus its a child of it. Same applies to this text. </p> <p> within a p tag </p> <p>PHP-TO-HAML get's out of the way. It helps you focus on your real job rather than on nasty PHP details </p> </div>
Ergebnis:
That's the wave - get it
indentation represents relation %p is indented more than the %div thus its a child of it. Same applies to this text.
within a p tag
PHP-TO-HAML get's out of the way. It helps you focus on your real job rather than on nasty PHP details
Example: 2 automatic quoting.haml
HAML (written by a designer or programmer)%span='this is an arbitary HTML expression'
%span='<> See how this gets quoted'
%span!='<b>unquoted bold text</b>'
%div
="this works :-)\n"
=strtoupper("this too")."\n"
inerpolation quoted always eg #{'</>'}
%span='Note: '.substr('Ecomplicated php expression',1)
HTML (generated by the resulting PHP code)
<span>this is an arbitary HTML expression </span> <span><> See how this gets quoted </span> <span><b>unquoted bold text</b> </span> <div>this works :-) THIS TOO inerpolation quoted always eg </> </div> <span>Note: complicated php expression </span>
Ergebnis:
this is an arbitary HTML expression
<> See how this gets quoted
unquoted bold text
this works :-)
THIS TOO
inerpolation quoted always eg </>
Note: complicated php expression
Example: 3.1 filters javascript.haml
HAML (written by a designer or programmer):javascript
// this code will be put into a JS tag
dosmething('foo');
HTML (generated by the resulting PHP code)
<script type='text/javascript'>
//<![CDATA[
// this code will be put into a JS tag
dosmething('foo');
//]]>
</script>
Example: 3.2 filters css.haml
HAML (written by a designer or programmer):css // same for CSS rules
HTML (generated by the resulting PHP code)
<style type='text/css'>
/*<![CDATA[*/
// same for CSS rules
/*]]>*/
</style>
Example: 3.3 filters plain.haml
HAML (written by a designer or programmer)%div
:plain
Indentation also applies to filters.
You can text which will be inserted verbatim here
Text within filters may contain interpolations:
#{'<>'} #{3*7} #{count(array(1,2,3))}
No quoting takes place
<a href="www.google.com">GOOGLE</a>
unless you you use the escaped filter:
HTML (generated by the resulting PHP code)
<div>Indentation also applies to filters. You can text which will be inserted verbatim here Text within filters may contain interpolations: <> 21 3 No quoting takes place <a href="www.google.com">GOOGLE</a> unless you you use the escaped filter: </div>
Example: 3.4 filters escaped.haml
HAML (written by a designer or programmer):escaped
<a href="www.google.com">GOOGLE</a>
HTML (generated by the resulting PHP code)
<a href="www.google.com">GOOGLE</a>
Example: 4.1 loops foreach.haml
HAML (written by a designer or programmer)%h1 foreach
%ul
-foreach(array(1,2) as $nr)
%li=$nr
HTML (generated by the resulting PHP code)
<h1> foreach
</h1>
<ul> <li>1
</li> <li>2
</li></ul>
Ergebnis:
foreach
- 1
- 2
Example: 4.2 if then else.haml
HAML (written by a designer or programmer)%h1 assign vars and add conditinoal HTML code
- $pred = true;
- if ($pred)
%div true
- else
%div
false (note that closing of else
branch depends on indentation only!)
HTML (generated by the resulting PHP code)
<h1> assign vars and add conditinoal HTML code </h1> <div> true </div>
Ergebnis:
assign vars and add conditinoal HTML code
true
Example: 4.3 loops for.haml
HAML (written by a designer or programmer)%h1 or use a simple for loop
- for($i=0; $i<3; $i++)
=$i.' '
HTML (generated by the resulting PHP code)
<h1> or use a simple for loop </h1>0 1 2
Ergebnis:
or use a simple for loop
0 1 2Example: 5 how php to haml handles attributes.haml
HAML (written by a designer or programmer)%h1
CSS selector like div attributes can
be provided this way:
#container.container
...
%h1 HTML like attributes
Note how duplicates are removed from the class attribute:
%a(class="foo bar foo") link
%a(href="# looser" href="# winner") link
%h1 Ruby Hash like attributes
Note how duplicates are removed from the class attribute:
%a{:href=>"#", :class=>["a", "list", "bar"]} link
%h1 You can also use interplation within attribute names:
%div{"_#{3*7}" => "really wired attribute!"}
%h1 And of course you can mix both styles:
%h(target="_blank"){:href => "href value"} link
HTML (generated by the resulting PHP code)
<h1>CSS selector like div attributes can be provided this way: </h1> <div class='container' id='container'>... </div> <h1> HTML like attributes </h1>Note how duplicates are removed from the class attribute: <a class='bar foo'> link </a> <a href='# winner'> link </a> <h1> Ruby Hash like attributes </h1>Note how duplicates are removed from the class attribute: <a class='a bar list' href='#'> link </a> <h1> You can also use interplation within attribute names: </h1> <div _21='really wired attribute!'> </div> <h1> And of course you can mix both styles: </h1> <h target='_blank' href='href value'> link </h>
Example: 6 (conditional) comments.haml
HAML (written by a designer or programmer)This will only be rendered for IE: /[if IE] %p IE only -# This won't be rendered at all / this will be rendered as HTML comment
HTML (generated by the resulting PHP code)
This will only be rendered for IE: <!--[if IE]> <p> IE only </p><![endif]--><!-- this will be rendered as HTML comment -->
Ergebnis:
This will only be rendered for IE:
Next: Try Online