ember 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,497 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <title>Ember::Template::Program</title>
7
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8
+ <link rel="stylesheet" href="../../../css/reset.css" type="text/css" media="screen" />
9
+ <link rel="stylesheet" href="../../../css/main.css" type="text/css" media="screen" />
10
+ <script src="../../../js/jquery-1.3.2.min.js" type="text/javascript" charset="utf-8"></script>
11
+ <script src="../../../js/jquery-effect.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="../../../js/main.js" type="text/javascript" charset="utf-8"></script>
13
+ </head>
14
+
15
+ <body>
16
+ <div class="banner">
17
+ <h1>
18
+ <span class="type">Class</span>
19
+ Ember::Template::Program
20
+
21
+ <span class="parent">&lt;
22
+
23
+ Object
24
+
25
+ </span>
26
+
27
+ </h1>
28
+ <ul class="files">
29
+
30
+ <li><a href="../../../files/lib/ember/template_rb.html">lib/ember/template.rb</a></li>
31
+
32
+ </ul>
33
+ </div>
34
+ <div id="bodyContent">
35
+ <div id="content">
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+ <div class="sectiontitle">Methods</div>
46
+ <dl class="methods">
47
+
48
+ <dt>C</dt>
49
+ <dd>
50
+ <ul>
51
+
52
+ <li><a href="#M000018">code</a>,</li>
53
+
54
+ <li><a href="#M000021">compile</a></li>
55
+
56
+ </ul>
57
+ </dd>
58
+
59
+ <dt>E</dt>
60
+ <dd>
61
+ <ul>
62
+
63
+ <li><a href="#M000020">emit_end</a>,</li>
64
+
65
+ <li><a href="#M000014">empty?</a>,</li>
66
+
67
+ <li><a href="#M000019">expr</a></li>
68
+
69
+ </ul>
70
+ </dd>
71
+
72
+ <dt>N</dt>
73
+ <dd>
74
+ <ul>
75
+
76
+ <li><a href="#M000013">new</a>,</li>
77
+
78
+ <li><a href="#M000015">new_line</a>,</li>
79
+
80
+ <li><a href="#M000016">new_line?</a></li>
81
+
82
+ </ul>
83
+ </dd>
84
+
85
+ <dt>T</dt>
86
+ <dd>
87
+ <ul>
88
+
89
+ <li><a href="#M000017">text</a></li>
90
+
91
+ </ul>
92
+ </dd>
93
+
94
+ </dl>
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+ <div class="sectiontitle">Constants</div>
105
+ <table border='0' cellpadding='5'>
106
+
107
+ <tr valign='top'>
108
+ <td class="attr-name">Statement</td>
109
+ <td>=</td>
110
+ <td class="attr-value">Struct.new :type, :value</td>
111
+ </tr>
112
+
113
+
114
+ </table>
115
+
116
+
117
+
118
+
119
+
120
+ <div class="sectiontitle">Class Public methods</div>
121
+
122
+ <div class="method">
123
+ <div class="title" id="M000013">
124
+
125
+ <a name="M000013"></a><b>new</b>(result_variable, continue_result)
126
+
127
+ </div>
128
+
129
+ <div class="description">
130
+ <p>
131
+ Transforms this program into Ruby code which uses the given variable name
132
+ as the evaluation buffer.
133
+ </p>
134
+ <p>
135
+ If continue_result is true, the evaluation buffer is reused if it already
136
+ exists in the rendering context.
137
+ </p>
138
+
139
+ </div>
140
+
141
+
142
+
143
+
144
+ <div class="sourcecode">
145
+ <p class="source-link">
146
+ Source: <a href="javascript:toggleSource('M000013_source')" id="l_M000013_source">show</a>
147
+
148
+ </p>
149
+ <div id="M000013_source" class="dyn-source">
150
+ <pre><span class="ruby-comment cmt"># File lib/ember/template.rb, line 435</span>
151
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span> <span class="ruby-identifier">result_variable</span>, <span class="ruby-identifier">continue_result</span>
152
+ <span class="ruby-ivar">@result_variable</span> = <span class="ruby-identifier">result_variable</span>
153
+ <span class="ruby-ivar">@continue_result</span> = <span class="ruby-identifier">continue_result</span>
154
+ <span class="ruby-ivar">@source_lines</span> = [] <span class="ruby-comment cmt"># each line is composed of multiple statements</span>
155
+ <span class="ruby-keyword kw">end</span></pre>
156
+ </div>
157
+ </div>
158
+
159
+ </div>
160
+
161
+ <div class="sectiontitle">Instance Public methods</div>
162
+
163
+ <div class="method">
164
+ <div class="title" id="M000018">
165
+
166
+ <a name="M000018"></a><b>code</b>(value)
167
+
168
+ </div>
169
+
170
+ <div class="description">
171
+ <p>
172
+ Schedules the given Ruby code to be evaluated when this program is run.
173
+ </p>
174
+
175
+ </div>
176
+
177
+
178
+
179
+
180
+ <div class="sourcecode">
181
+ <p class="source-link">
182
+ Source: <a href="javascript:toggleSource('M000018_source')" id="l_M000018_source">show</a>
183
+
184
+ </p>
185
+ <div id="M000018_source" class="dyn-source">
186
+ <pre><span class="ruby-comment cmt"># File lib/ember/template.rb, line 484</span>
187
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">code</span> <span class="ruby-identifier">value</span>
188
+ <span class="ruby-identifier">statement</span> <span class="ruby-identifier">:code</span>, <span class="ruby-identifier">value</span>
189
+ <span class="ruby-keyword kw">end</span></pre>
190
+ </div>
191
+ </div>
192
+
193
+ </div>
194
+
195
+ <div class="method">
196
+ <div class="title" id="M000021">
197
+
198
+ <a name="M000021"></a><b>compile</b>()
199
+
200
+ </div>
201
+
202
+ <div class="description">
203
+ <p>
204
+ Transforms this program into executable Ruby source code.
205
+ </p>
206
+
207
+ </div>
208
+
209
+
210
+
211
+
212
+ <div class="sourcecode">
213
+ <p class="source-link">
214
+ Source: <a href="javascript:toggleSource('M000021_source')" id="l_M000021_source">show</a>
215
+
216
+ </p>
217
+ <div id="M000021_source" class="dyn-source">
218
+ <pre><span class="ruby-comment cmt"># File lib/ember/template.rb, line 529</span>
219
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">compile</span>
220
+ <span class="ruby-value str">'(%s %s []; %s; %s.join)'</span> <span class="ruby-operator">%</span> [
221
+ <span class="ruby-ivar">@result_variable</span>,
222
+ <span class="ruby-ivar">@continue_result</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'||='</span> <span class="ruby-operator">:</span> <span class="ruby-value str">'='</span>,
223
+
224
+ <span class="ruby-ivar">@source_lines</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">source_line</span><span class="ruby-operator">|</span>
225
+ <span class="ruby-identifier">compiled_line</span> = []
226
+ <span class="ruby-identifier">combine_prev</span> = <span class="ruby-keyword kw">false</span>
227
+
228
+ <span class="ruby-identifier">source_line</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">stmt</span><span class="ruby-operator">|</span>
229
+ <span class="ruby-identifier">is_code</span> = <span class="ruby-identifier">stmt</span>.<span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:code</span>
230
+ <span class="ruby-identifier">is_expr</span> = <span class="ruby-identifier">stmt</span>.<span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:expr</span>
231
+
232
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">is_code</span>
233
+ <span class="ruby-identifier">compiled_line</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">stmt</span>.<span class="ruby-identifier">value</span>
234
+ <span class="ruby-identifier">combine_prev</span> = <span class="ruby-keyword kw">false</span>
235
+
236
+ <span class="ruby-keyword kw">else</span>
237
+ <span class="ruby-identifier">code</span> =
238
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">is_expr</span>
239
+ <span class="ruby-node">&quot; &lt;&lt; (#{stmt.value})&quot;</span>
240
+ <span class="ruby-keyword kw">else</span>
241
+ <span class="ruby-node">&quot; &lt;&lt; #{stmt.value.inspect}&quot;</span>
242
+ <span class="ruby-keyword kw">end</span>
243
+
244
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">combine_prev</span>
245
+ <span class="ruby-identifier">compiled_line</span>.<span class="ruby-identifier">last</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">code</span>
246
+ <span class="ruby-keyword kw">else</span>
247
+ <span class="ruby-identifier">compiled_line</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@result_variable</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">code</span>
248
+ <span class="ruby-keyword kw">end</span>
249
+
250
+ <span class="ruby-identifier">combine_prev</span> = <span class="ruby-keyword kw">true</span>
251
+ <span class="ruby-keyword kw">end</span>
252
+ <span class="ruby-keyword kw">end</span>
253
+
254
+ <span class="ruby-identifier">compiled_line</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">'; '</span>)
255
+
256
+ <span class="ruby-keyword kw">end</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;\n&quot;</span>),
257
+
258
+ <span class="ruby-ivar">@result_variable</span>,
259
+ ]
260
+ <span class="ruby-keyword kw">end</span></pre>
261
+ </div>
262
+ </div>
263
+
264
+ </div>
265
+
266
+ <div class="method">
267
+ <div class="title" id="M000020">
268
+
269
+ <a name="M000020"></a><b>emit_end</b>()
270
+
271
+ </div>
272
+
273
+ <div class="description">
274
+ <p>
275
+ Inserts an <% end %> directive before the oldest non-whitespace statement
276
+ possible.
277
+ </p>
278
+ <p>
279
+ Preceding lines that only emit whitespace are skipped.
280
+ </p>
281
+
282
+ </div>
283
+
284
+
285
+
286
+
287
+ <div class="sourcecode">
288
+ <p class="source-link">
289
+ Source: <a href="javascript:toggleSource('M000020_source')" id="l_M000020_source">show</a>
290
+
291
+ </p>
292
+ <div id="M000020_source" class="dyn-source">
293
+ <pre><span class="ruby-comment cmt"># File lib/ember/template.rb, line 502</span>
294
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">emit_end</span>
295
+ <span class="ruby-identifier">ending</span> = <span class="ruby-constant">Statement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">:code</span>, <span class="ruby-identifier">:end</span>)
296
+ <span class="ruby-identifier">current</span> = <span class="ruby-identifier">insertion_point</span>
297
+
298
+ <span class="ruby-identifier">can_skip_line</span> = <span class="ruby-identifier">lambda</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
299
+ <span class="ruby-identifier">line</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span>
300
+ <span class="ruby-identifier">line</span>.<span class="ruby-identifier">all?</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">stmt</span><span class="ruby-operator">|</span> <span class="ruby-identifier">stmt</span>.<span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:text</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">stmt</span>.<span class="ruby-identifier">value</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/\A\s*\z/</span> }
301
+ <span class="ruby-keyword kw">end</span>
302
+
303
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">can_skip_line</span>[<span class="ruby-identifier">current</span>]
304
+ <span class="ruby-identifier">target</span> = <span class="ruby-identifier">current</span>
305
+
306
+ <span class="ruby-comment cmt"># skip past empty whitespace in previous lines</span>
307
+ <span class="ruby-ivar">@source_lines</span>.<span class="ruby-identifier">reverse_each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
308
+ <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">can_skip_line</span>[<span class="ruby-identifier">line</span>]
309
+ <span class="ruby-identifier">target</span> = <span class="ruby-identifier">line</span>
310
+ <span class="ruby-keyword kw">end</span>
311
+
312
+ <span class="ruby-identifier">target</span>.<span class="ruby-identifier">unshift</span> <span class="ruby-identifier">ending</span>
313
+ <span class="ruby-keyword kw">else</span>
314
+ <span class="ruby-identifier">current</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">ending</span>
315
+ <span class="ruby-keyword kw">end</span>
316
+ <span class="ruby-keyword kw">end</span></pre>
317
+ </div>
318
+ </div>
319
+
320
+ </div>
321
+
322
+ <div class="method">
323
+ <div class="title" id="M000014">
324
+
325
+ <a name="M000014"></a><b>empty?</b>()
326
+
327
+ </div>
328
+
329
+ <div class="description">
330
+ <p>
331
+ Returns true if there are no source lines in this program.
332
+ </p>
333
+
334
+ </div>
335
+
336
+
337
+
338
+
339
+ <div class="sourcecode">
340
+ <p class="source-link">
341
+ Source: <a href="javascript:toggleSource('M000014_source')" id="l_M000014_source">show</a>
342
+
343
+ </p>
344
+ <div id="M000014_source" class="dyn-source">
345
+ <pre><span class="ruby-comment cmt"># File lib/ember/template.rb, line 444</span>
346
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">empty?</span>
347
+ <span class="ruby-ivar">@source_lines</span>.<span class="ruby-identifier">empty?</span>
348
+ <span class="ruby-keyword kw">end</span></pre>
349
+ </div>
350
+ </div>
351
+
352
+ </div>
353
+
354
+ <div class="method">
355
+ <div class="title" id="M000019">
356
+
357
+ <a name="M000019"></a><b>expr</b>(value)
358
+
359
+ </div>
360
+
361
+ <div class="description">
362
+ <p>
363
+ Schedules the given Ruby code to be evaluated and inserted into the
364
+ evaluation buffer when this program is run.
365
+ </p>
366
+
367
+ </div>
368
+
369
+
370
+
371
+
372
+ <div class="sourcecode">
373
+ <p class="source-link">
374
+ Source: <a href="javascript:toggleSource('M000019_source')" id="l_M000019_source">show</a>
375
+
376
+ </p>
377
+ <div id="M000019_source" class="dyn-source">
378
+ <pre><span class="ruby-comment cmt"># File lib/ember/template.rb, line 492</span>
379
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">expr</span> <span class="ruby-identifier">value</span>
380
+ <span class="ruby-identifier">statement</span> <span class="ruby-identifier">:expr</span>, <span class="ruby-identifier">value</span>
381
+ <span class="ruby-keyword kw">end</span></pre>
382
+ </div>
383
+ </div>
384
+
385
+ </div>
386
+
387
+ <div class="method">
388
+ <div class="title" id="M000015">
389
+
390
+ <a name="M000015"></a><b>new_line</b>()
391
+
392
+ </div>
393
+
394
+ <div class="description">
395
+ <p>
396
+ Begins a new line in the program&#8217;s source code.
397
+ </p>
398
+
399
+ </div>
400
+
401
+
402
+
403
+
404
+ <div class="sourcecode">
405
+ <p class="source-link">
406
+ Source: <a href="javascript:toggleSource('M000015_source')" id="l_M000015_source">show</a>
407
+
408
+ </p>
409
+ <div id="M000015_source" class="dyn-source">
410
+ <pre><span class="ruby-comment cmt"># File lib/ember/template.rb, line 451</span>
411
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">new_line</span>
412
+ <span class="ruby-ivar">@source_lines</span> <span class="ruby-operator">&lt;&lt;</span> []
413
+ <span class="ruby-keyword kw">end</span></pre>
414
+ </div>
415
+ </div>
416
+
417
+ </div>
418
+
419
+ <div class="method">
420
+ <div class="title" id="M000016">
421
+
422
+ <a name="M000016"></a><b>new_line?</b>()
423
+
424
+ </div>
425
+
426
+ <div class="description">
427
+ <p>
428
+ Returns true if a new (blank) line is ready in the program&#8217;s source
429
+ code.
430
+ </p>
431
+
432
+ </div>
433
+
434
+
435
+
436
+
437
+ <div class="sourcecode">
438
+ <p class="source-link">
439
+ Source: <a href="javascript:toggleSource('M000016_source')" id="l_M000016_source">show</a>
440
+
441
+ </p>
442
+ <div id="M000016_source" class="dyn-source">
443
+ <pre><span class="ruby-comment cmt"># File lib/ember/template.rb, line 459</span>
444
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">new_line?</span>
445
+ <span class="ruby-identifier">ary</span> = <span class="ruby-identifier">insertion_point</span>
446
+ <span class="ruby-identifier">ary</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">ary</span>.<span class="ruby-identifier">all?</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">stmt</span><span class="ruby-operator">|</span> <span class="ruby-identifier">stmt</span>.<span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:code</span> }
447
+ <span class="ruby-keyword kw">end</span></pre>
448
+ </div>
449
+ </div>
450
+
451
+ </div>
452
+
453
+ <div class="method">
454
+ <div class="title" id="M000017">
455
+
456
+ <a name="M000017"></a><b>text</b>(value)
457
+
458
+ </div>
459
+
460
+ <div class="description">
461
+ <p>
462
+ Schedules the given text to be inserted verbatim into the evaluation buffer
463
+ when this program is run.
464
+ </p>
465
+
466
+ </div>
467
+
468
+
469
+
470
+
471
+ <div class="sourcecode">
472
+ <p class="source-link">
473
+ Source: <a href="javascript:toggleSource('M000017_source')" id="l_M000017_source">show</a>
474
+
475
+ </p>
476
+ <div id="M000017_source" class="dyn-source">
477
+ <pre><span class="ruby-comment cmt"># File lib/ember/template.rb, line 468</span>
478
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">text</span> <span class="ruby-identifier">value</span>
479
+ <span class="ruby-comment cmt"># don't bother emitting empty strings</span>
480
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">empty?</span>
481
+
482
+ <span class="ruby-comment cmt"># combine adjacent statements to reduce code size</span>
483
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">prev</span> = <span class="ruby-identifier">insertion_point</span>.<span class="ruby-identifier">last</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">prev</span>.<span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:text</span>
484
+ <span class="ruby-identifier">prev</span>.<span class="ruby-identifier">value</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">value</span>
485
+ <span class="ruby-keyword kw">else</span>
486
+ <span class="ruby-identifier">statement</span> <span class="ruby-identifier">:text</span>, <span class="ruby-identifier">value</span>
487
+ <span class="ruby-keyword kw">end</span>
488
+ <span class="ruby-keyword kw">end</span></pre>
489
+ </div>
490
+ </div>
491
+
492
+ </div>
493
+
494
+ </div>
495
+ </div>
496
+ </body>
497
+ </html>