trusty-festivity-extension 2.5.0 → 2.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/skins/traf/fn-instagram-bg.svg +1 -0
  3. data/app/assets/images/skins/traf/fn-twitter-bg.svg +1 -0
  4. data/app/assets/images/skins/traf/traf-background.png +0 -0
  5. data/app/assets/images/skins/traf/traf-bottom-wave.png +0 -0
  6. data/app/assets/images/skins/traf/traf-bridge.png +0 -0
  7. data/app/assets/images/skins/traf/traf-bubbles.png +0 -0
  8. data/app/assets/images/skins/traf/traf-logo.svg +1 -0
  9. data/app/assets/javascripts/modal.js +2 -2
  10. data/app/assets/stylesheets/grunticon/info.svg +1 -0
  11. data/app/assets/stylesheets/grunticon/production/icons.data.png.css +4 -0
  12. data/app/assets/stylesheets/grunticon/production/icons.data.svg.css +5 -0
  13. data/app/assets/stylesheets/grunticon/production/icons.fallback.css +5 -0
  14. data/app/assets/stylesheets/grunticon/production/png/info.png +0 -0
  15. data/app/assets/stylesheets/library/_icons.scss +8 -1
  16. data/app/assets/stylesheets/skins/traf/contexts/_featured_events.scss +72 -0
  17. data/app/assets/stylesheets/skins/traf/contexts/_homepage.scss +95 -0
  18. data/app/assets/stylesheets/skins/traf/contexts/_social_feed.scss +82 -0
  19. data/app/assets/stylesheets/skins/traf/library/_general-mixins.scss +1 -0
  20. data/app/assets/stylesheets/skins/traf/skin.scss +2 -2
  21. data/app/assets/stylesheets/traf.scss +3 -0
  22. data/app/models/festivity_event_list.rb +4 -1
  23. data/app/presenters/social/twitter_post_presenter.rb +32 -0
  24. data/app/services/twitter_feed_service.rb +16 -0
  25. data/app/views/festivity_events/show.html.haml +2 -4
  26. data/app/views/festivity_markets/_market.html.haml +1 -3
  27. data/app/views/social/_instagram_posts.html.haml +0 -4
  28. data/app/views/social/_twitter_posts.html.haml +16 -0
  29. data/lib/tags/header_tags.rb +3 -2
  30. data/lib/tags/social_feed_tags.rb +13 -0
  31. data/lib/trusty-festivity-extension.rb +1 -1
  32. metadata +17 -73
  33. data/node_modules/bower/node_modules/handlebars/coverage/coverage.json +0 -1
  34. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/dist/cjs/handlebars.js.html +0 -436
  35. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/dist/cjs/handlebars.runtime.js.html +0 -424
  36. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/dist/cjs/handlebars/base.js.html +0 -1012
  37. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/dist/cjs/handlebars/compiler/ast.js.html +0 -961
  38. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/dist/cjs/handlebars/compiler/base.js.html +0 -382
  39. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/dist/cjs/handlebars/compiler/compiler.js.html +0 -1675
  40. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/dist/cjs/handlebars/compiler/helpers.js.html +0 -880
  41. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/dist/cjs/handlebars/compiler/index.html +0 -441
  42. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/dist/cjs/handlebars/compiler/javascript-compiler.js.html +0 -3211
  43. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/dist/cjs/handlebars/compiler/parser.js.html +0 -1819
  44. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/dist/cjs/handlebars/compiler/printer.js.html +0 -742
  45. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/dist/cjs/handlebars/compiler/visitor.js.html +0 -355
  46. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/dist/cjs/handlebars/exception.js.html +0 -403
  47. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/dist/cjs/handlebars/index.html +0 -402
  48. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/dist/cjs/handlebars/runtime.js.html +0 -898
  49. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/dist/cjs/handlebars/safe-string.js.html +0 -352
  50. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/dist/cjs/handlebars/utils.js.html +0 -583
  51. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/dist/cjs/index.html +0 -363
  52. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/index.html +0 -389
  53. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/lib/index.html +0 -363
  54. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/lib/index.js.html +0 -400
  55. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/lib/precompiler.js.html +0 -754
  56. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/prettify.css +0 -1
  57. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/prettify.js +0 -1
  58. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/ast.js.html +0 -1594
  59. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/basic.js.html +0 -973
  60. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/blocks.js.html +0 -676
  61. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/builtins.js.html +0 -1018
  62. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/data.js.html +0 -1093
  63. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/env/browser.js.html +0 -406
  64. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/env/common.js.html +0 -481
  65. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/env/index.html +0 -402
  66. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/env/node.js.html +0 -391
  67. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/env/runner.js.html +0 -457
  68. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/env/runtime.js.html +0 -466
  69. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/helpers.js.html +0 -2182
  70. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/index.html +0 -597
  71. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/javascript-compiler.js.html +0 -535
  72. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/parser.js.html +0 -892
  73. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/partials.js.html +0 -841
  74. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/precompiler.js.html +0 -442
  75. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/regressions.js.html +0 -790
  76. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/require.js.html +0 -391
  77. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/runtime.js.html +0 -337
  78. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/spec.js.html +0 -469
  79. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/string-params.js.html +0 -850
  80. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/subexpressions.js.html +0 -970
  81. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/tokenizer.js.html +0 -1528
  82. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/track-ids.js.html +0 -811
  83. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/utils.js.html +0 -499
  84. data/node_modules/bower/node_modules/handlebars/coverage/lcov-report/spec/whitespace-control.js.html +0 -508
  85. data/node_modules/bower/node_modules/handlebars/coverage/lcov.info +0 -3181
  86. data/node_modules/bower/node_modules/semver/semver.browser.js.gz +0 -0
  87. data/node_modules/bower/node_modules/semver/semver.min.js.gz +0 -0
  88. data/node_modules/bower/node_modules/tmp/README.md +0 -162
  89. data/node_modules/bower/node_modules/tmp/domain-test.js +0 -13
  90. data/node_modules/bower/node_modules/tmp/lib/tmp.js +0 -307
  91. data/node_modules/bower/node_modules/tmp/package.json +0 -50
  92. data/node_modules/bower/node_modules/tmp/test-all.sh +0 -9
  93. data/node_modules/bower/node_modules/tmp/test.js +0 -6
  94. data/node_modules/bower/node_modules/tmp/test/base.js +0 -74
  95. data/node_modules/bower/node_modules/tmp/test/dir-test.js +0 -196
  96. data/node_modules/bower/node_modules/tmp/test/file-test.js +0 -177
  97. data/node_modules/bower/node_modules/tmp/test/graceful.js +0 -15
  98. data/node_modules/bower/node_modules/tmp/test/keep.js +0 -11
  99. data/node_modules/bower/node_modules/tmp/test/name-test.js +0 -82
  100. data/node_modules/bower/node_modules/tmp/test/spawn.js +0 -32
  101. data/node_modules/bower/node_modules/tmp/test/symlinkme/file.js +0 -0
  102. data/node_modules/bower/node_modules/tmp/test/unsafe.js +0 -30
  103. data/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/nested-error-stacks/README.md~ +0 -0
@@ -1,1018 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <title>Code coverage report for spec/builtins.js</title>
5
- <meta charset="utf-8">
6
-
7
- <link rel="stylesheet" href="../prettify.css">
8
-
9
- <style>
10
- body, html {
11
- margin:0; padding: 0;
12
- }
13
- body {
14
- font-family: Helvetica Neue, Helvetica,Arial;
15
- font-size: 10pt;
16
- }
17
- div.header, div.footer {
18
- background: #eee;
19
- padding: 1em;
20
- }
21
- div.header {
22
- z-index: 100;
23
- position: fixed;
24
- top: 0;
25
- border-bottom: 1px solid #666;
26
- width: 100%;
27
- }
28
- div.footer {
29
- border-top: 1px solid #666;
30
- }
31
- div.body {
32
- margin-top: 10em;
33
- }
34
- div.meta {
35
- font-size: 90%;
36
- text-align: center;
37
- }
38
- h1, h2, h3 {
39
- font-weight: normal;
40
- }
41
- h1 {
42
- font-size: 12pt;
43
- }
44
- h2 {
45
- font-size: 10pt;
46
- }
47
- pre {
48
- font-family: Consolas, Menlo, Monaco, monospace;
49
- margin: 0;
50
- padding: 0;
51
- line-height: 14px;
52
- font-size: 14px;
53
- -moz-tab-size: 2;
54
- -o-tab-size: 2;
55
- tab-size: 2;
56
- }
57
-
58
- div.path { font-size: 110%; }
59
- div.path a:link, div.path a:visited { color: #000; }
60
- table.coverage { border-collapse: collapse; margin:0; padding: 0 }
61
-
62
- table.coverage td {
63
- margin: 0;
64
- padding: 0;
65
- color: #111;
66
- vertical-align: top;
67
- }
68
- table.coverage td.line-count {
69
- width: 50px;
70
- text-align: right;
71
- padding-right: 5px;
72
- }
73
- table.coverage td.line-coverage {
74
- color: #777 !important;
75
- text-align: right;
76
- border-left: 1px solid #666;
77
- border-right: 1px solid #666;
78
- }
79
-
80
- table.coverage td.text {
81
- }
82
-
83
- table.coverage td span.cline-any {
84
- display: inline-block;
85
- padding: 0 5px;
86
- width: 40px;
87
- }
88
- table.coverage td span.cline-neutral {
89
- background: #eee;
90
- }
91
- table.coverage td span.cline-yes {
92
- background: #b5d592;
93
- color: #999;
94
- }
95
- table.coverage td span.cline-no {
96
- background: #fc8c84;
97
- }
98
-
99
- .cstat-yes { color: #111; }
100
- .cstat-no { background: #fc8c84; color: #111; }
101
- .fstat-no { background: #ffc520; color: #111 !important; }
102
- .cbranch-no { background: yellow !important; color: #111; }
103
-
104
- .cstat-skip { background: #ddd; color: #111; }
105
- .fstat-skip { background: #ddd; color: #111 !important; }
106
- .cbranch-skip { background: #ddd !important; color: #111; }
107
-
108
- .missing-if-branch {
109
- display: inline-block;
110
- margin-right: 10px;
111
- position: relative;
112
- padding: 0 4px;
113
- background: black;
114
- color: yellow;
115
- }
116
-
117
- .skip-if-branch {
118
- display: none;
119
- margin-right: 10px;
120
- position: relative;
121
- padding: 0 4px;
122
- background: #ccc;
123
- color: white;
124
- }
125
-
126
- .missing-if-branch .typ, .skip-if-branch .typ {
127
- color: inherit !important;
128
- }
129
-
130
- .entity, .metric { font-weight: bold; }
131
- .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
132
- .metric small { font-size: 80%; font-weight: normal; color: #666; }
133
-
134
- div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
135
- div.coverage-summary td, div.coverage-summary table th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
136
- div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
137
- div.coverage-summary th.file { border-right: none !important; }
138
- div.coverage-summary th.pic { border-left: none !important; text-align: right; }
139
- div.coverage-summary th.pct { border-right: none !important; }
140
- div.coverage-summary th.abs { border-left: none !important; text-align: right; }
141
- div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
142
- div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
143
- div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap; }
144
- div.coverage-summary td.pic { min-width: 120px !important; }
145
- div.coverage-summary a:link { text-decoration: none; color: #000; }
146
- div.coverage-summary a:visited { text-decoration: none; color: #333; }
147
- div.coverage-summary a:hover { text-decoration: underline; }
148
- div.coverage-summary tfoot td { border-top: 1px solid #666; }
149
-
150
- div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {
151
- height: 10px;
152
- width: 7px;
153
- display: inline-block;
154
- margin-left: 0.5em;
155
- }
156
- div.coverage-summary .yui3-datatable-sort-indicator {
157
- background: url("https://yui-s.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent;
158
- }
159
- div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {
160
- background-position: 0 -20px;
161
- }
162
- div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {
163
- background-position: 0 -10px;
164
- }
165
-
166
- .high { background: #b5d592 !important; }
167
- .medium { background: #ffe87c !important; }
168
- .low { background: #fc8c84 !important; }
169
-
170
- span.cover-fill, span.cover-empty {
171
- display:inline-block;
172
- border:1px solid #444;
173
- background: white;
174
- height: 12px;
175
- }
176
- span.cover-fill {
177
- background: #ccc;
178
- border-right: 1px solid #444;
179
- }
180
- span.cover-empty {
181
- background: white;
182
- border-left: none;
183
- }
184
- span.cover-full {
185
- border-right: none !important;
186
- }
187
- pre.prettyprint {
188
- border: none !important;
189
- padding: 0 !important;
190
- margin: 0 !important;
191
- }
192
- .com { color: #999 !important; }
193
- .ignore-none { color: #999; font-weight: normal; }
194
-
195
- </style>
196
- </head>
197
- <body>
198
- <div class="header low">
199
- <h1>Code coverage report for <span class="entity">spec/builtins.js</span></h1>
200
- <h2>
201
-
202
- Statements: <span class="metric">20% <small>(27 / 135)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
203
-
204
-
205
- Branches: <span class="metric">0% <small>(0 / 4)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
206
-
207
-
208
- Functions: <span class="metric">13.89% <small>(5 / 36)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
209
-
210
-
211
- Lines: <span class="metric">20.93% <small>(27 / 129)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
212
-
213
- Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
214
- </h2>
215
- <div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">spec/</a> &#187; builtins.js</div>
216
- </div>
217
- <div class="body">
218
- <pre><table class="coverage">
219
- <tr><td class="line-count">1
220
- 2
221
- 3
222
- 4
223
- 5
224
- 6
225
- 7
226
- 8
227
- 9
228
- 10
229
- 11
230
- 12
231
- 13
232
- 14
233
- 15
234
- 16
235
- 17
236
- 18
237
- 19
238
- 20
239
- 21
240
- 22
241
- 23
242
- 24
243
- 25
244
- 26
245
- 27
246
- 28
247
- 29
248
- 30
249
- 31
250
- 32
251
- 33
252
- 34
253
- 35
254
- 36
255
- 37
256
- 38
257
- 39
258
- 40
259
- 41
260
- 42
261
- 43
262
- 44
263
- 45
264
- 46
265
- 47
266
- 48
267
- 49
268
- 50
269
- 51
270
- 52
271
- 53
272
- 54
273
- 55
274
- 56
275
- 57
276
- 58
277
- 59
278
- 60
279
- 61
280
- 62
281
- 63
282
- 64
283
- 65
284
- 66
285
- 67
286
- 68
287
- 69
288
- 70
289
- 71
290
- 72
291
- 73
292
- 74
293
- 75
294
- 76
295
- 77
296
- 78
297
- 79
298
- 80
299
- 81
300
- 82
301
- 83
302
- 84
303
- 85
304
- 86
305
- 87
306
- 88
307
- 89
308
- 90
309
- 91
310
- 92
311
- 93
312
- 94
313
- 95
314
- 96
315
- 97
316
- 98
317
- 99
318
- 100
319
- 101
320
- 102
321
- 103
322
- 104
323
- 105
324
- 106
325
- 107
326
- 108
327
- 109
328
- 110
329
- 111
330
- 112
331
- 113
332
- 114
333
- 115
334
- 116
335
- 117
336
- 118
337
- 119
338
- 120
339
- 121
340
- 122
341
- 123
342
- 124
343
- 125
344
- 126
345
- 127
346
- 128
347
- 129
348
- 130
349
- 131
350
- 132
351
- 133
352
- 134
353
- 135
354
- 136
355
- 137
356
- 138
357
- 139
358
- 140
359
- 141
360
- 142
361
- 143
362
- 144
363
- 145
364
- 146
365
- 147
366
- 148
367
- 149
368
- 150
369
- 151
370
- 152
371
- 153
372
- 154
373
- 155
374
- 156
375
- 157
376
- 158
377
- 159
378
- 160
379
- 161
380
- 162
381
- 163
382
- 164
383
- 165
384
- 166
385
- 167
386
- 168
387
- 169
388
- 170
389
- 171
390
- 172
391
- 173
392
- 174
393
- 175
394
- 176
395
- 177
396
- 178
397
- 179
398
- 180
399
- 181
400
- 182
401
- 183
402
- 184
403
- 185
404
- 186
405
- 187
406
- 188
407
- 189
408
- 190
409
- 191
410
- 192
411
- 193
412
- 194
413
- 195
414
- 196
415
- 197
416
- 198
417
- 199
418
- 200
419
- 201
420
- 202
421
- 203
422
- 204
423
- 205
424
- 206
425
- 207
426
- 208
427
- 209
428
- 210
429
- 211
430
- 212
431
- 213
432
- 214
433
- 215
434
- 216
435
- 217
436
- 218
437
- 219
438
- 220
439
- 221
440
- 222
441
- 223
442
- 224
443
- 225
444
- 226
445
- 227
446
- 228
447
- 229
448
- 230
449
- 231
450
- 232
451
- 233</td><td class="line-coverage"><span class="cline-any cline-neutral">&nbsp;</span>
452
- <span class="cline-any cline-yes">3</span>
453
- <span class="cline-any cline-yes">3</span>
454
- <span class="cline-any cline-yes">3</span>
455
- <span class="cline-any cline-no">&nbsp;</span>
456
- <span class="cline-any cline-no">&nbsp;</span>
457
- <span class="cline-any cline-neutral">&nbsp;</span>
458
- <span class="cline-any cline-no">&nbsp;</span>
459
- <span class="cline-any cline-neutral">&nbsp;</span>
460
- <span class="cline-any cline-no">&nbsp;</span>
461
- <span class="cline-any cline-neutral">&nbsp;</span>
462
- <span class="cline-any cline-no">&nbsp;</span>
463
- <span class="cline-any cline-neutral">&nbsp;</span>
464
- <span class="cline-any cline-no">&nbsp;</span>
465
- <span class="cline-any cline-neutral">&nbsp;</span>
466
- <span class="cline-any cline-no">&nbsp;</span>
467
- <span class="cline-any cline-neutral">&nbsp;</span>
468
- <span class="cline-any cline-no">&nbsp;</span>
469
- <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-no">&nbsp;</span>
471
- <span class="cline-any cline-neutral">&nbsp;</span>
472
- <span class="cline-any cline-neutral">&nbsp;</span>
473
- <span class="cline-any cline-neutral">&nbsp;</span>
474
- <span class="cline-any cline-neutral">&nbsp;</span>
475
- <span class="cline-any cline-yes">3</span>
476
- <span class="cline-any cline-no">&nbsp;</span>
477
- <span class="cline-any cline-no">&nbsp;</span>
478
- <span class="cline-any cline-neutral">&nbsp;</span>
479
- <span class="cline-any cline-no">&nbsp;</span>
480
- <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-no">&nbsp;</span>
482
- <span class="cline-any cline-neutral">&nbsp;</span>
483
- <span class="cline-any cline-no">&nbsp;</span>
484
- <span class="cline-any cline-neutral">&nbsp;</span>
485
- <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-neutral">&nbsp;</span>
487
- <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-yes">3</span>
489
- <span class="cline-any cline-yes">3</span>
490
- <span class="cline-any cline-no">&nbsp;</span>
491
- <span class="cline-any cline-no">&nbsp;</span>
492
- <span class="cline-any cline-neutral">&nbsp;</span>
493
- <span class="cline-any cline-yes">3</span>
494
- <span class="cline-any cline-no">&nbsp;</span>
495
- <span class="cline-any cline-no">&nbsp;</span>
496
- <span class="cline-any cline-neutral">&nbsp;</span>
497
- <span class="cline-any cline-yes">3</span>
498
- <span class="cline-any cline-no">&nbsp;</span>
499
- <span class="cline-any cline-no">&nbsp;</span>
500
- <span class="cline-any cline-neutral">&nbsp;</span>
501
- <span class="cline-any cline-neutral">&nbsp;</span>
502
- <span class="cline-any cline-neutral">&nbsp;</span>
503
- <span class="cline-any cline-yes">3</span>
504
- <span class="cline-any cline-yes">3</span>
505
- <span class="cline-any cline-no">&nbsp;</span>
506
- <span class="cline-any cline-no">&nbsp;</span>
507
- <span class="cline-any cline-neutral">&nbsp;</span>
508
- <span class="cline-any cline-neutral">&nbsp;</span>
509
- <span class="cline-any cline-neutral">&nbsp;</span>
510
- <span class="cline-any cline-yes">3</span>
511
- <span class="cline-any cline-no">&nbsp;</span>
512
- <span class="cline-any cline-no">&nbsp;</span>
513
- <span class="cline-any cline-no">&nbsp;</span>
514
- <span class="cline-any cline-neutral">&nbsp;</span>
515
- <span class="cline-any cline-no">&nbsp;</span>
516
- <span class="cline-any cline-neutral">&nbsp;</span>
517
- <span class="cline-any cline-neutral">&nbsp;</span>
518
- <span class="cline-any cline-neutral">&nbsp;</span>
519
- <span class="cline-any cline-yes">3</span>
520
- <span class="cline-any cline-no">&nbsp;</span>
521
- <span class="cline-any cline-no">&nbsp;</span>
522
- <span class="cline-any cline-neutral">&nbsp;</span>
523
- <span class="cline-any cline-neutral">&nbsp;</span>
524
- <span class="cline-any cline-neutral">&nbsp;</span>
525
- <span class="cline-any cline-neutral">&nbsp;</span>
526
- <span class="cline-any cline-no">&nbsp;</span>
527
- <span class="cline-any cline-no">&nbsp;</span>
528
- <span class="cline-any cline-no">&nbsp;</span>
529
- <span class="cline-any cline-neutral">&nbsp;</span>
530
- <span class="cline-any cline-no">&nbsp;</span>
531
- <span class="cline-any cline-no">&nbsp;</span>
532
- <span class="cline-any cline-neutral">&nbsp;</span>
533
- <span class="cline-any cline-neutral">&nbsp;</span>
534
- <span class="cline-any cline-neutral">&nbsp;</span>
535
- <span class="cline-any cline-yes">3</span>
536
- <span class="cline-any cline-no">&nbsp;</span>
537
- <span class="cline-any cline-no">&nbsp;</span>
538
- <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-no">&nbsp;</span>
540
- <span class="cline-any cline-no">&nbsp;</span>
541
- <span class="cline-any cline-neutral">&nbsp;</span>
542
- <span class="cline-any cline-no">&nbsp;</span>
543
- <span class="cline-any cline-neutral">&nbsp;</span>
544
- <span class="cline-any cline-neutral">&nbsp;</span>
545
- <span class="cline-any cline-yes">3</span>
546
- <span class="cline-any cline-no">&nbsp;</span>
547
- <span class="cline-any cline-no">&nbsp;</span>
548
- <span class="cline-any cline-neutral">&nbsp;</span>
549
- <span class="cline-any cline-no">&nbsp;</span>
550
- <span class="cline-any cline-no">&nbsp;</span>
551
- <span class="cline-any cline-neutral">&nbsp;</span>
552
- <span class="cline-any cline-no">&nbsp;</span>
553
- <span class="cline-any cline-neutral">&nbsp;</span>
554
- <span class="cline-any cline-neutral">&nbsp;</span>
555
- <span class="cline-any cline-yes">3</span>
556
- <span class="cline-any cline-no">&nbsp;</span>
557
- <span class="cline-any cline-no">&nbsp;</span>
558
- <span class="cline-any cline-neutral">&nbsp;</span>
559
- <span class="cline-any cline-no">&nbsp;</span>
560
- <span class="cline-any cline-no">&nbsp;</span>
561
- <span class="cline-any cline-neutral">&nbsp;</span>
562
- <span class="cline-any cline-no">&nbsp;</span>
563
- <span class="cline-any cline-neutral">&nbsp;</span>
564
- <span class="cline-any cline-neutral">&nbsp;</span>
565
- <span class="cline-any cline-neutral">&nbsp;</span>
566
- <span class="cline-any cline-yes">3</span>
567
- <span class="cline-any cline-no">&nbsp;</span>
568
- <span class="cline-any cline-no">&nbsp;</span>
569
- <span class="cline-any cline-neutral">&nbsp;</span>
570
- <span class="cline-any cline-no">&nbsp;</span>
571
- <span class="cline-any cline-no">&nbsp;</span>
572
- <span class="cline-any cline-neutral">&nbsp;</span>
573
- <span class="cline-any cline-no">&nbsp;</span>
574
- <span class="cline-any cline-neutral">&nbsp;</span>
575
- <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-yes">3</span>
577
- <span class="cline-any cline-no">&nbsp;</span>
578
- <span class="cline-any cline-no">&nbsp;</span>
579
- <span class="cline-any cline-neutral">&nbsp;</span>
580
- <span class="cline-any cline-no">&nbsp;</span>
581
- <span class="cline-any cline-no">&nbsp;</span>
582
- <span class="cline-any cline-neutral">&nbsp;</span>
583
- <span class="cline-any cline-no">&nbsp;</span>
584
- <span class="cline-any cline-neutral">&nbsp;</span>
585
- <span class="cline-any cline-neutral">&nbsp;</span>
586
- <span class="cline-any cline-yes">3</span>
587
- <span class="cline-any cline-no">&nbsp;</span>
588
- <span class="cline-any cline-no">&nbsp;</span>
589
- <span class="cline-any cline-neutral">&nbsp;</span>
590
- <span class="cline-any cline-no">&nbsp;</span>
591
- <span class="cline-any cline-no">&nbsp;</span>
592
- <span class="cline-any cline-neutral">&nbsp;</span>
593
- <span class="cline-any cline-no">&nbsp;</span>
594
- <span class="cline-any cline-neutral">&nbsp;</span>
595
- <span class="cline-any cline-neutral">&nbsp;</span>
596
- <span class="cline-any cline-yes">3</span>
597
- <span class="cline-any cline-no">&nbsp;</span>
598
- <span class="cline-any cline-no">&nbsp;</span>
599
- <span class="cline-any cline-neutral">&nbsp;</span>
600
- <span class="cline-any cline-no">&nbsp;</span>
601
- <span class="cline-any cline-no">&nbsp;</span>
602
- <span class="cline-any cline-neutral">&nbsp;</span>
603
- <span class="cline-any cline-no">&nbsp;</span>
604
- <span class="cline-any cline-neutral">&nbsp;</span>
605
- <span class="cline-any cline-neutral">&nbsp;</span>
606
- <span class="cline-any cline-yes">3</span>
607
- <span class="cline-any cline-no">&nbsp;</span>
608
- <span class="cline-any cline-no">&nbsp;</span>
609
- <span class="cline-any cline-neutral">&nbsp;</span>
610
- <span class="cline-any cline-no">&nbsp;</span>
611
- <span class="cline-any cline-no">&nbsp;</span>
612
- <span class="cline-any cline-neutral">&nbsp;</span>
613
- <span class="cline-any cline-no">&nbsp;</span>
614
- <span class="cline-any cline-neutral">&nbsp;</span>
615
- <span class="cline-any cline-neutral">&nbsp;</span>
616
- <span class="cline-any cline-yes">3</span>
617
- <span class="cline-any cline-no">&nbsp;</span>
618
- <span class="cline-any cline-no">&nbsp;</span>
619
- <span class="cline-any cline-no">&nbsp;</span>
620
- <span class="cline-any cline-neutral">&nbsp;</span>
621
- <span class="cline-any cline-no">&nbsp;</span>
622
- <span class="cline-any cline-neutral">&nbsp;</span>
623
- <span class="cline-any cline-neutral">&nbsp;</span>
624
- <span class="cline-any cline-neutral">&nbsp;</span>
625
- <span class="cline-any cline-yes">3</span>
626
- <span class="cline-any cline-no">&nbsp;</span>
627
- <span class="cline-any cline-no">&nbsp;</span>
628
- <span class="cline-any cline-neutral">&nbsp;</span>
629
- <span class="cline-any cline-no">&nbsp;</span>
630
- <span class="cline-any cline-no">&nbsp;</span>
631
- <span class="cline-any cline-neutral">&nbsp;</span>
632
- <span class="cline-any cline-neutral">&nbsp;</span>
633
- <span class="cline-any cline-neutral">&nbsp;</span>
634
- <span class="cline-any cline-neutral">&nbsp;</span>
635
- <span class="cline-any cline-no">&nbsp;</span>
636
- <span class="cline-any cline-neutral">&nbsp;</span>
637
- <span class="cline-any cline-neutral">&nbsp;</span>
638
- <span class="cline-any cline-yes">3</span>
639
- <span class="cline-any cline-no">&nbsp;</span>
640
- <span class="cline-any cline-no">&nbsp;</span>
641
- <span class="cline-any cline-no">&nbsp;</span>
642
- <span class="cline-any cline-neutral">&nbsp;</span>
643
- <span class="cline-any cline-neutral">&nbsp;</span>
644
- <span class="cline-any cline-neutral">&nbsp;</span>
645
- <span class="cline-any cline-neutral">&nbsp;</span>
646
- <span class="cline-any cline-yes">3</span>
647
- <span class="cline-any cline-no">&nbsp;</span>
648
- <span class="cline-any cline-no">&nbsp;</span>
649
- <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-no">&nbsp;</span>
651
- <span class="cline-any cline-no">&nbsp;</span>
652
- <span class="cline-any cline-no">&nbsp;</span>
653
- <span class="cline-any cline-no">&nbsp;</span>
654
- <span class="cline-any cline-neutral">&nbsp;</span>
655
- <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-no">&nbsp;</span>
657
- <span class="cline-any cline-no">&nbsp;</span>
658
- <span class="cline-any cline-no">&nbsp;</span>
659
- <span class="cline-any cline-neutral">&nbsp;</span>
660
- <span class="cline-any cline-neutral">&nbsp;</span>
661
- <span class="cline-any cline-neutral">&nbsp;</span>
662
- <span class="cline-any cline-yes">3</span>
663
- <span class="cline-any cline-yes">3</span>
664
- <span class="cline-any cline-no">&nbsp;</span>
665
- <span class="cline-any cline-neutral">&nbsp;</span>
666
- <span class="cline-any cline-neutral">&nbsp;</span>
667
- <span class="cline-any cline-no">&nbsp;</span>
668
- <span class="cline-any cline-no">&nbsp;</span>
669
- <span class="cline-any cline-neutral">&nbsp;</span>
670
- <span class="cline-any cline-no">&nbsp;</span>
671
- <span class="cline-any cline-neutral">&nbsp;</span>
672
- <span class="cline-any cline-yes">3</span>
673
- <span class="cline-any cline-no">&nbsp;</span>
674
- <span class="cline-any cline-neutral">&nbsp;</span>
675
- <span class="cline-any cline-neutral">&nbsp;</span>
676
- <span class="cline-any cline-no">&nbsp;</span>
677
- <span class="cline-any cline-no">&nbsp;</span>
678
- <span class="cline-any cline-neutral">&nbsp;</span>
679
- <span class="cline-any cline-no">&nbsp;</span>
680
- <span class="cline-any cline-neutral">&nbsp;</span>
681
- <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-neutral">&nbsp;</span>
683
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*global CompilerContext, shouldCompileTo, shouldThrow, compileWithPartials, handlebarsEnv */
684
- describe('builtin helpers', function() {
685
- describe('#if', function() {
686
- it("if", <span class="fstat-no" title="function not covered" >function() {</span>
687
- <span class="cstat-no" title="statement not covered" > var string = "{{#if goodbye}}GOODBYE {{/if}}cruel {{world}}!";</span>
688
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, {goodbye: true, world: "world"}, "GOODBYE cruel world!",</span>
689
- "if with boolean argument shows the contents when true");
690
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, {goodbye: "dummy", world: "world"}, "GOODBYE cruel world!",</span>
691
- "if with string argument shows the contents");
692
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, {goodbye: false, world: "world"}, "cruel world!",</span>
693
- "if with boolean argument does not show the contents when false");
694
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, {world: "world"}, "cruel world!",</span>
695
- "if with undefined does not show the contents");
696
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, {goodbye: ['foo'], world: "world"}, "GOODBYE cruel world!",</span>
697
- "if with non-empty array shows the contents");
698
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, {goodbye: [], world: "world"}, "cruel world!",</span>
699
- "if with empty array does not show the contents");
700
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, {goodbye: 0, world: "world"}, "cruel world!",</span>
701
- "if with zero does not show the contents");
702
- <span class="cstat-no" title="statement not covered" > shouldCompileTo("{{#if goodbye includeZero=true}}GOODBYE {{/if}}cruel {{world}}!",</span>
703
- {goodbye: 0, world: "world"}, "GOODBYE cruel world!",
704
- "if with zero does not show the contents");
705
- });
706
- &nbsp;
707
- it("if with function argument", <span class="fstat-no" title="function not covered" >function() {</span>
708
- <span class="cstat-no" title="statement not covered" > var string = "{{#if goodbye}}GOODBYE {{/if}}cruel {{world}}!";</span>
709
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, {goodbye: <span class="fstat-no" title="function not covered" >function() {<span class="cstat-no" title="statement not covered" ></span>return true;}</span>, world: "world"}, "GOODBYE cruel world!",</span>
710
- "if with function shows the contents when function returns true");
711
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, {goodbye: <span class="fstat-no" title="function not covered" >function() {<span class="cstat-no" title="statement not covered" ></span>return this.world;}</span>, world: "world"}, "GOODBYE cruel world!",</span>
712
- "if with function shows the contents when function returns string");
713
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, {goodbye: <span class="fstat-no" title="function not covered" >function() {<span class="cstat-no" title="statement not covered" ></span>return false;}</span>, world: "world"}, "cruel world!",</span>
714
- "if with function does not show the contents when returns false");
715
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, {goodbye: <span class="fstat-no" title="function not covered" >function() {<span class="cstat-no" title="statement not covered" ></span>return this.foo;}</span>, world: "world"}, "cruel world!",</span>
716
- "if with function does not show the contents when returns undefined");
717
- });
718
- });
719
- &nbsp;
720
- describe('#with', function() {
721
- it("with", <span class="fstat-no" title="function not covered" >function() {</span>
722
- <span class="cstat-no" title="statement not covered" > var string = "{{#with person}}{{first}} {{last}}{{/with}}";</span>
723
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, {person: {first: "Alan", last: "Johnson"}}, "Alan Johnson");</span>
724
- });
725
- it("with with function argument", <span class="fstat-no" title="function not covered" >function() {</span>
726
- <span class="cstat-no" title="statement not covered" > var string = "{{#with person}}{{first}} {{last}}{{/with}}";</span>
727
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, {person: <span class="fstat-no" title="function not covered" >function() {</span> <span class="cstat-no" title="statement not covered" >return {first: "Alan", last: "Johnson"};}</span>}, "Alan Johnson");</span>
728
- });
729
- it("with with else", <span class="fstat-no" title="function not covered" >function() {</span>
730
- <span class="cstat-no" title="statement not covered" > var string = "{{#with person}}Person is present{{else}}Person is not present{{/with}}";</span>
731
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, {}, "Person is not present");</span>
732
- });
733
- });
734
- &nbsp;
735
- describe('#each', function() {
736
- beforeEach(<span class="fstat-no" title="function not covered" >function() {</span>
737
- <span class="cstat-no" title="statement not covered" > handlebarsEnv.registerHelper('detectDataInsideEach', <span class="fstat-no" title="function not covered" >function(options) {</span></span>
738
- <span class="cstat-no" title="statement not covered" > return options.data &amp;&amp; options.data.exclaim;</span>
739
- });
740
- });
741
- &nbsp;
742
- it("each", <span class="fstat-no" title="function not covered" >function() {</span>
743
- <span class="cstat-no" title="statement not covered" > var string = "{{#each goodbyes}}{{text}}! {{/each}}cruel {{world}}!";</span>
744
- <span class="cstat-no" title="statement not covered" > var hash = {goodbyes: [{text: "goodbye"}, {text: "Goodbye"}, {text: "GOODBYE"}], world: "world"};</span>
745
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, hash, "goodbye! Goodbye! GOODBYE! cruel world!",</span>
746
- "each with array argument iterates over the contents when not empty");
747
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, {goodbyes: [], world: "world"}, "cruel world!",</span>
748
- "each with array argument ignores the contents when empty");
749
- });
750
- &nbsp;
751
- it("each with an object and @key", <span class="fstat-no" title="function not covered" >function() {</span>
752
- <span class="cstat-no" title="statement not covered" > var string = "{{#each goodbyes}}{{@key}}. {{text}}! {{/each}}cruel {{world}}!";</span>
753
- <span class="cstat-no" title="statement not covered" > var hash = {goodbyes: {"&lt;b&gt;#1&lt;/b&gt;": {text: "goodbye"}, 2: {text: "GOODBYE"}}, world: "world"};</span>
754
- &nbsp;
755
- // Object property iteration order is undefined according to ECMA spec,
756
- // so we need to check both possible orders
757
- // @see http://stackoverflow.com/questions/280713/elements-order-in-a-for-in-loop
758
- <span class="cstat-no" title="statement not covered" > var actual = compileWithPartials(string, hash);</span>
759
- <span class="cstat-no" title="statement not covered" > var expected1 = "&amp;lt;b&amp;gt;#1&amp;lt;/b&amp;gt;. goodbye! 2. GOODBYE! cruel world!";</span>
760
- <span class="cstat-no" title="statement not covered" > var expected2 = "2. GOODBYE! &amp;lt;b&amp;gt;#1&amp;lt;/b&amp;gt;. goodbye! cruel world!";</span>
761
- &nbsp;
762
- <span class="cstat-no" title="statement not covered" > equals(actual === expected1 || actual === expected2, true, "each with object argument iterates over the contents when not empty");</span>
763
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, {goodbyes: [], world: "world"}, "cruel world!",</span>
764
- "each with object argument ignores the contents when empty");
765
- });
766
- &nbsp;
767
- it("each with @index", <span class="fstat-no" title="function not covered" >function() {</span>
768
- <span class="cstat-no" title="statement not covered" > var string = "{{#each goodbyes}}{{@index}}. {{text}}! {{/each}}cruel {{world}}!";</span>
769
- <span class="cstat-no" title="statement not covered" > var hash = {goodbyes: [{text: "goodbye"}, {text: "Goodbye"}, {text: "GOODBYE"}], world: "world"};</span>
770
- &nbsp;
771
- <span class="cstat-no" title="statement not covered" > var template = CompilerContext.compile(string);</span>
772
- <span class="cstat-no" title="statement not covered" > var result = template(hash);</span>
773
- &nbsp;
774
- <span class="cstat-no" title="statement not covered" > equal(result, "0. goodbye! 1. Goodbye! 2. GOODBYE! cruel world!", "The @index variable is used");</span>
775
- });
776
- &nbsp;
777
- it("each with nested @index", <span class="fstat-no" title="function not covered" >function() {</span>
778
- <span class="cstat-no" title="statement not covered" > var string = "{{#each goodbyes}}{{@index}}. {{text}}! {{#each ../goodbyes}}{{@index}} {{/each}}After {{@index}} {{/each}}{{@index}}cruel {{world}}!";</span>
779
- <span class="cstat-no" title="statement not covered" > var hash = {goodbyes: [{text: "goodbye"}, {text: "Goodbye"}, {text: "GOODBYE"}], world: "world"};</span>
780
- &nbsp;
781
- <span class="cstat-no" title="statement not covered" > var template = CompilerContext.compile(string);</span>
782
- <span class="cstat-no" title="statement not covered" > var result = template(hash);</span>
783
- &nbsp;
784
- <span class="cstat-no" title="statement not covered" > equal(result, "0. goodbye! 0 1 2 After 0 1. Goodbye! 0 1 2 After 1 2. GOODBYE! 0 1 2 After 2 cruel world!", "The @index variable is used");</span>
785
- });
786
- &nbsp;
787
- it("each object with @index", <span class="fstat-no" title="function not covered" >function() {</span>
788
- <span class="cstat-no" title="statement not covered" > var string = "{{#each goodbyes}}{{@index}}. {{text}}! {{/each}}cruel {{world}}!";</span>
789
- <span class="cstat-no" title="statement not covered" > var hash = {goodbyes: {'a': {text: "goodbye"}, b: {text: "Goodbye"}, c: {text: "GOODBYE"}}, world: "world"};</span>
790
- &nbsp;
791
- <span class="cstat-no" title="statement not covered" > var template = CompilerContext.compile(string);</span>
792
- <span class="cstat-no" title="statement not covered" > var result = template(hash);</span>
793
- &nbsp;
794
- <span class="cstat-no" title="statement not covered" > equal(result, "0. goodbye! 1. Goodbye! 2. GOODBYE! cruel world!", "The @index variable is used");</span>
795
- });
796
- &nbsp;
797
- &nbsp;
798
- it("each with @first", <span class="fstat-no" title="function not covered" >function() {</span>
799
- <span class="cstat-no" title="statement not covered" > var string = "{{#each goodbyes}}{{#if @first}}{{text}}! {{/if}}{{/each}}cruel {{world}}!";</span>
800
- <span class="cstat-no" title="statement not covered" > var hash = {goodbyes: [{text: "goodbye"}, {text: "Goodbye"}, {text: "GOODBYE"}], world: "world"};</span>
801
- &nbsp;
802
- <span class="cstat-no" title="statement not covered" > var template = CompilerContext.compile(string);</span>
803
- <span class="cstat-no" title="statement not covered" > var result = template(hash);</span>
804
- &nbsp;
805
- <span class="cstat-no" title="statement not covered" > equal(result, "goodbye! cruel world!", "The @first variable is used");</span>
806
- });
807
- &nbsp;
808
- it("each with nested @first", <span class="fstat-no" title="function not covered" >function() {</span>
809
- <span class="cstat-no" title="statement not covered" > var string = "{{#each goodbyes}}({{#if @first}}{{text}}! {{/if}}{{#each ../goodbyes}}{{#if @first}}{{text}}!{{/if}}{{/each}}{{#if @first}} {{text}}!{{/if}}) {{/each}}cruel {{world}}!";</span>
810
- <span class="cstat-no" title="statement not covered" > var hash = {goodbyes: [{text: "goodbye"}, {text: "Goodbye"}, {text: "GOODBYE"}], world: "world"};</span>
811
- &nbsp;
812
- <span class="cstat-no" title="statement not covered" > var template = CompilerContext.compile(string);</span>
813
- <span class="cstat-no" title="statement not covered" > var result = template(hash);</span>
814
- &nbsp;
815
- <span class="cstat-no" title="statement not covered" > equal(result, "(goodbye! goodbye! goodbye!) (goodbye!) (goodbye!) cruel world!", "The @first variable is used");</span>
816
- });
817
- &nbsp;
818
- it("each object with @first", <span class="fstat-no" title="function not covered" >function() {</span>
819
- <span class="cstat-no" title="statement not covered" > var string = "{{#each goodbyes}}{{#if @first}}{{text}}! {{/if}}{{/each}}cruel {{world}}!";</span>
820
- <span class="cstat-no" title="statement not covered" > var hash = {goodbyes: {'foo': {text: "goodbye"}, bar: {text: "Goodbye"}}, world: "world"};</span>
821
- &nbsp;
822
- <span class="cstat-no" title="statement not covered" > var template = CompilerContext.compile(string);</span>
823
- <span class="cstat-no" title="statement not covered" > var result = template(hash);</span>
824
- &nbsp;
825
- <span class="cstat-no" title="statement not covered" > equal(result, "goodbye! cruel world!", "The @first variable is used");</span>
826
- });
827
- &nbsp;
828
- it("each with @last", <span class="fstat-no" title="function not covered" >function() {</span>
829
- <span class="cstat-no" title="statement not covered" > var string = "{{#each goodbyes}}{{#if @last}}{{text}}! {{/if}}{{/each}}cruel {{world}}!";</span>
830
- <span class="cstat-no" title="statement not covered" > var hash = {goodbyes: [{text: "goodbye"}, {text: "Goodbye"}, {text: "GOODBYE"}], world: "world"};</span>
831
- &nbsp;
832
- <span class="cstat-no" title="statement not covered" > var template = CompilerContext.compile(string);</span>
833
- <span class="cstat-no" title="statement not covered" > var result = template(hash);</span>
834
- &nbsp;
835
- <span class="cstat-no" title="statement not covered" > equal(result, "GOODBYE! cruel world!", "The @last variable is used");</span>
836
- });
837
- &nbsp;
838
- it("each with nested @last", <span class="fstat-no" title="function not covered" >function() {</span>
839
- <span class="cstat-no" title="statement not covered" > var string = "{{#each goodbyes}}({{#if @last}}{{text}}! {{/if}}{{#each ../goodbyes}}{{#if @last}}{{text}}!{{/if}}{{/each}}{{#if @last}} {{text}}!{{/if}}) {{/each}}cruel {{world}}!";</span>
840
- <span class="cstat-no" title="statement not covered" > var hash = {goodbyes: [{text: "goodbye"}, {text: "Goodbye"}, {text: "GOODBYE"}], world: "world"};</span>
841
- &nbsp;
842
- <span class="cstat-no" title="statement not covered" > var template = CompilerContext.compile(string);</span>
843
- <span class="cstat-no" title="statement not covered" > var result = template(hash);</span>
844
- &nbsp;
845
- <span class="cstat-no" title="statement not covered" > equal(result, "(GOODBYE!) (GOODBYE!) (GOODBYE! GOODBYE! GOODBYE!) cruel world!", "The @last variable is used");</span>
846
- });
847
- &nbsp;
848
- it("each with function argument", <span class="fstat-no" title="function not covered" >function() {</span>
849
- <span class="cstat-no" title="statement not covered" > var string = "{{#each goodbyes}}{{text}}! {{/each}}cruel {{world}}!";</span>
850
- <span class="cstat-no" title="statement not covered" > var hash = {goodbyes: <span class="fstat-no" title="function not covered" >function () {</span> <span class="cstat-no" title="statement not covered" >return [{text: "goodbye"}, {text: "Goodbye"}, {text: "GOODBYE"}];}</span>, world: "world"};</span>
851
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, hash, "goodbye! Goodbye! GOODBYE! cruel world!",</span>
852
- "each with array function argument iterates over the contents when not empty");
853
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, {goodbyes: [], world: "world"}, "cruel world!",</span>
854
- "each with array function argument ignores the contents when empty");
855
- });
856
- &nbsp;
857
- it("data passed to helpers", <span class="fstat-no" title="function not covered" >function() {</span>
858
- <span class="cstat-no" title="statement not covered" > var string = "{{#each letters}}{{this}}{{detectDataInsideEach}}{{/each}}";</span>
859
- <span class="cstat-no" title="statement not covered" > var hash = {letters: ['a', 'b', 'c']};</span>
860
- &nbsp;
861
- <span class="cstat-no" title="statement not covered" > var template = CompilerContext.compile(string);</span>
862
- <span class="cstat-no" title="statement not covered" > var result = template(hash, {</span>
863
- data: {
864
- exclaim: '!'
865
- }
866
- });
867
- <span class="cstat-no" title="statement not covered" > equal(result, 'a!b!c!', 'should output data');</span>
868
- });
869
- &nbsp;
870
- it("each on implicit context", <span class="fstat-no" title="function not covered" >function() {</span>
871
- <span class="cstat-no" title="statement not covered" > shouldThrow(<span class="fstat-no" title="function not covered" >function() {</span></span>
872
- <span class="cstat-no" title="statement not covered" > var template = CompilerContext.compile("{{#each}}{{text}}! {{/each}}cruel world!");</span>
873
- <span class="cstat-no" title="statement not covered" > template({});</span>
874
- }, handlebarsEnv.Exception, 'Must pass iterator to #each');
875
- });
876
- });
877
- &nbsp;
878
- it("#log", <span class="fstat-no" title="function not covered" >function() {</span>
879
- <span class="cstat-no" title="statement not covered" > var string = "{{log blah}}";</span>
880
- <span class="cstat-no" title="statement not covered" > var hash = { blah: "whee" };</span>
881
- &nbsp;
882
- <span class="cstat-no" title="statement not covered" > var levelArg, logArg;</span>
883
- <span class="cstat-no" title="statement not covered" > handlebarsEnv.log = <span class="fstat-no" title="function not covered" >function(level, arg){</span></span>
884
- <span class="cstat-no" title="statement not covered" > levelArg = level;</span>
885
- <span class="cstat-no" title="statement not covered" > logArg = arg;</span>
886
- };
887
- &nbsp;
888
- <span class="cstat-no" title="statement not covered" > shouldCompileTo(string, hash, "", "log should not display");</span>
889
- <span class="cstat-no" title="statement not covered" > equals(1, levelArg, "should call log with 1");</span>
890
- <span class="cstat-no" title="statement not covered" > equals("whee", logArg, "should call log with 'whee'");</span>
891
- });
892
- &nbsp;
893
- &nbsp;
894
- describe('#lookup', function() {
895
- it('should lookup arbitrary content', <span class="fstat-no" title="function not covered" >function() {</span>
896
- <span class="cstat-no" title="statement not covered" > var string = '{{#each goodbyes}}{{lookup ../data .}}{{/each}}',</span>
897
- hash = {goodbyes: [0, 1], data: ['foo', 'bar']};
898
- &nbsp;
899
- <span class="cstat-no" title="statement not covered" > var template = CompilerContext.compile(string);</span>
900
- <span class="cstat-no" title="statement not covered" > var result = template(hash);</span>
901
- &nbsp;
902
- <span class="cstat-no" title="statement not covered" > equal(result, 'foobar');</span>
903
- });
904
- it('should not fail on undefined value', <span class="fstat-no" title="function not covered" >function() {</span>
905
- <span class="cstat-no" title="statement not covered" > var string = '{{#each goodbyes}}{{lookup ../bar .}}{{/each}}',</span>
906
- hash = {goodbyes: [0, 1], data: ['foo', 'bar']};
907
- &nbsp;
908
- <span class="cstat-no" title="statement not covered" > var template = CompilerContext.compile(string);</span>
909
- <span class="cstat-no" title="statement not covered" > var result = template(hash);</span>
910
- &nbsp;
911
- <span class="cstat-no" title="statement not covered" > equal(result, '');</span>
912
- });
913
- });
914
- });
915
- &nbsp;</pre></td></tr>
916
- </table></pre>
917
-
918
- </div>
919
- <div class="footer">
920
- <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Wed Aug 13 2014 23:50:21 GMT-0500 (CDT)</div>
921
- </div>
922
-
923
- <script src="../prettify.js"></script>
924
-
925
- <script src="https://yui-s.yahooapis.com/3.6.0/build/yui/yui-min.js"></script>
926
- <script>
927
-
928
- YUI().use('datatable', function (Y) {
929
-
930
- var formatters = {
931
- pct: function (o) {
932
- o.className += o.record.get('classes')[o.column.key];
933
- try {
934
- return o.value.toFixed(2) + '%';
935
- } catch (ex) { return o.value + '%'; }
936
- },
937
- html: function (o) {
938
- o.className += o.record.get('classes')[o.column.key];
939
- return o.record.get(o.column.key + '_html');
940
- }
941
- },
942
- defaultFormatter = function (o) {
943
- o.className += o.record.get('classes')[o.column.key];
944
- return o.value;
945
- };
946
-
947
- function getColumns(theadNode) {
948
- var colNodes = theadNode.all('tr th'),
949
- cols = [],
950
- col;
951
- colNodes.each(function (colNode) {
952
- col = {
953
- key: colNode.getAttribute('data-col'),
954
- label: colNode.get('innerHTML') || ' ',
955
- sortable: !colNode.getAttribute('data-nosort'),
956
- className: colNode.getAttribute('class'),
957
- type: colNode.getAttribute('data-type'),
958
- allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'
959
- };
960
- col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;
961
- cols.push(col);
962
- });
963
- return cols;
964
- }
965
-
966
- function getRowData(trNode, cols) {
967
- var tdNodes = trNode.all('td'),
968
- i,
969
- row = { classes: {} },
970
- node,
971
- name;
972
- for (i = 0; i < cols.length; i += 1) {
973
- name = cols[i].key;
974
- node = tdNodes.item(i);
975
- row[name] = node.getAttribute('data-value') || node.get('innerHTML');
976
- row[name + '_html'] = node.get('innerHTML');
977
- row.classes[name] = node.getAttribute('class');
978
- //Y.log('Name: ' + name + '; Value: ' + row[name]);
979
- if (cols[i].type === 'number') { row[name] = row[name] * 1; }
980
- }
981
- //Y.log(row);
982
- return row;
983
- }
984
-
985
- function getData(tbodyNode, cols) {
986
- var data = [];
987
- tbodyNode.all('tr').each(function (trNode) {
988
- data.push(getRowData(trNode, cols));
989
- });
990
- return data;
991
- }
992
-
993
- function replaceTable(node) {
994
- if (!node) { return; }
995
- var cols = getColumns(node.one('thead')),
996
- data = getData(node.one('tbody'), cols),
997
- table,
998
- parent = node.get('parentNode');
999
-
1000
- table = new Y.DataTable({
1001
- columns: cols,
1002
- data: data,
1003
- sortBy: 'file'
1004
- });
1005
- parent.set('innerHTML', '');
1006
- table.render(parent);
1007
- }
1008
-
1009
- Y.on('domready', function () {
1010
- replaceTable(Y.one('div.coverage-summary table'));
1011
- if (typeof prettyPrint === 'function') {
1012
- prettyPrint();
1013
- }
1014
- });
1015
- });
1016
- </script>
1017
- </body>
1018
- </html>