forked from slim-template/slim
-
Notifications
You must be signed in to change notification settings - Fork 0
/
logic-less.html
104 lines (91 loc) · 5.16 KB
/
logic-less.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="description" content="Slim is a template language whose goal is reduce html syntax to the essential parts without becoming cryptic."/>
<link href="css/slim.css" media="screen" rel="stylesheet" type="text/css"/>
<title>Slim - Logic Less</title>
</head>
<body>
<div id="side">
<div class="wrap">
<h1>Slim > Home</h1>
<h2 id="slogan">A lightweight templating engine</h2>
<ul id="links">
<li><a href="index.html">Home</a></li>
<li><a href="about.html">About</a></li>
<li><a href="docs.html">Docs</a></li>
<li><a href="logic-less.html" class="active">Logic-less</a></li>
<li><a href="contribute.html">Contribute</a></li>
<li><a href="http://rdoc.info/github/stonean/slim/master/frames">API</a></li>
<li class="last"><a href="cli.html">CLI</a></li>
</ul>
<p><a href="https://github.com/stonean/slim" class='github'>stonean<span>/</span><strong>slim</strong></a></p>
</div>
</div>
<div id="main">
<div class="wrap pad">
<h3>Logic-less</h3>
<div>
<p class='first'>So, what is logic less mode and how do you use it? Examples are best, lets start with the basics, conditionals:</p>
<pre><code><span class="comment">/ If the method <strong>is not</strong> false or empty?, the content will show</span>
- article
<span class="tag">h1</span> = title</pre></code>
<hr/>
<h4><a name="inverted-conditional" href="#inverted-conditional">Inverted conditional</a></h4>
<pre><code><span class="comment">/ If the method <strong>is</strong> false or empty?, the content will show</span>
-! article
<span class="tag">p</span> Sorry, article not found</pre></code>
<hr/>
<h4><a name="resolution-order" href="#resolution-order">Resolution order</a></h4>
<p>If article.respond_to?(<span class="symbol">:title</span>)</p>
<pre><code>- article
<span class="comment">/ Slim will execute article.send(:title)</span>
<span class="tag">h1</span> = title</pre></code>
<p>If article.respond_to?(:has_key?) and article.has_key?(:title)</p>
<pre><code>- article
<span class="comment">/ Slim will execute article[:title]</span>
<span class="tag">h1</span> = title</pre></code>
<p>If article.instance_variable_defined?(@title)</p>
<pre><code>- article
<span class="comment">/ Slim will execute article.instance_variable_get @title</span>
<span class="tag">h1</span> = title</pre></code>
<p>If all the above fails, Slim will try to resolve the title reference in the same order against the parent object. In this example, the parent would be the initial scope you are rendering the template against.</p>
<p>As you might have guessed, the article reference goes through the same steps against the scope.</p>
<hr/>
<h4><a name="things-to-know" href="#things-to-know">Things to know</a></h4>
<p>Instance variables are not allowed in the view code, but Slim will find and use them. Essentially, you're just using dropping the @ prefix in your template.</p>
<p>Parameterized method calls are not allowed.</p>
<hr/>
<h4><a name="rails-support" href="#rails-support">Logic less support in Rails</a></h4>
<p>Install:</p>
<pre><code>$ gem install slim</pre></code>
<p>Require:</p>
<pre><code><span class='keyword'>gem</span> <span class='string'>'slim'</span></pre></code>
<p>To enable logic less mode, put this line in config/environment.rb:
<pre><code><span class="constant">Slim</span>::<span class="constant">Engine</span>.set_default_options <span class="symbol">:sections</span> => <span class="keyword">true</span></pre></code>
</p>
<hr/>
<h4><a name="sinatra-support" href="#sinatra-support">Logic less support in Sinatra</a></h4>
<p>Sinata has built-in support for Slim. All you have to do is require slim and set the logic-less option.
This can be done in your config.ru:
<pre><code><span class="keyword">require</span> <span class="string">'slim'</span>
<span class="constant">Slim</span>::<span class="constant">Engine</span>.set_default_options <span class="symbol">:sections</span> => <span class="keyword">true</span></pre></code>
<p>You are then ready to rock!</p>
<p class="foot">
Source: <a href="http://github.com/stonean/slim">stonean/slim</a> | Slim logo & site design by <a href="http://github.com/activestylus">activestylus</a><br/>
</p>
</div></div>
<a id="forkme" href="http://github.com/stonean/slim">Fork me on Github</a>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-19270476-1");
pageTracker._trackPageview();
} catch(err) {}</script>
</body>
</html>