reveal-ck 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +8 -8
  2. data/README.md +24 -129
  3. data/bin/reveal-ck +3 -2
  4. data/lib/reveal-ck.rb +1 -1
  5. data/lib/reveal-ck/presentation_builder.rb +5 -5
  6. data/lib/reveal-ck/template_processor.rb +29 -0
  7. data/lib/reveal-ck/version.rb +1 -1
  8. data/reveal.js/Gruntfile.js +6 -2
  9. data/reveal.js/README.md +139 -31
  10. data/reveal.js/css/print/paper.css +1 -1
  11. data/reveal.js/css/print/pdf.css +1 -1
  12. data/reveal.js/css/reveal.css +134 -88
  13. data/reveal.js/css/reveal.min.css +1 -1
  14. data/reveal.js/css/theme/template/settings.scss +1 -0
  15. data/reveal.js/css/theme/template/theme.scss +1 -1
  16. data/reveal.js/index.html +7 -6
  17. data/reveal.js/js/reveal.js +496 -299
  18. data/reveal.js/js/reveal.min.js +2 -2
  19. data/reveal.js/lib/css/zenburn.css +16 -17
  20. data/reveal.js/package.json +10 -9
  21. data/reveal.js/plugin/leap/leap.js +157 -0
  22. data/reveal.js/plugin/markdown/example.html +3 -2
  23. data/reveal.js/plugin/markdown/example.md +2 -0
  24. data/reveal.js/plugin/markdown/markdown.js +273 -143
  25. data/reveal.js/plugin/math/math.js +64 -0
  26. data/reveal.js/plugin/notes/notes.html +27 -17
  27. data/reveal.js/plugin/notes/notes.js +25 -47
  28. data/reveal.js/{examples → test/examples}/assets/image1.png +0 -0
  29. data/reveal.js/{examples → test/examples}/assets/image2.png +0 -0
  30. data/reveal.js/{examples → test/examples}/barebones.html +3 -3
  31. data/reveal.js/{examples → test/examples}/embedded-media.html +4 -4
  32. data/reveal.js/test/examples/math.html +185 -0
  33. data/reveal.js/{examples → test/examples}/slide-backgrounds.html +4 -4
  34. data/reveal.js/test/qunit-1.12.0.css +244 -0
  35. data/reveal.js/test/qunit-1.12.0.js +2212 -0
  36. data/reveal.js/test/test-markdown.html +52 -0
  37. data/reveal.js/test/test-markdown.js +15 -0
  38. data/reveal.js/test/test.html +62 -0
  39. data/reveal.js/test/test.js +353 -0
  40. data/spec/data/haml/basic.haml +2 -2
  41. data/spec/data/html/converted_basic_slim.html +10 -0
  42. data/spec/data/slim/basic.slim +5 -0
  43. data/spec/lib/reveal-ck/template_processor_spec.rb +29 -0
  44. metadata +50 -9
  45. data/lib/reveal-ck/haml_processor.rb +0 -26
  46. data/spec/lib/reveal-ck/haml_processor_spec.rb +0 -40
@@ -0,0 +1,52 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="utf-8">
6
+
7
+ <title>reveal.js - Test Markdown</title>
8
+
9
+ <link rel="stylesheet" href="../css/reveal.min.css">
10
+ <link rel="stylesheet" href="qunit-1.12.0.css">
11
+ </head>
12
+
13
+ <body style="overflow: auto;">
14
+
15
+ <div id="qunit"></div>
16
+ <div id="qunit-fixture"></div>
17
+
18
+ <div class="reveal" style="display: none;">
19
+
20
+ <div class="slides">
21
+
22
+ <!-- <section data-markdown="example.md" data-separator="^\n\n\n" data-vertical="^\n\n"></section> -->
23
+
24
+ <!-- Slides are separated by newline + three dashes + newline, vertical slides identical but two dashes -->
25
+ <section data-markdown data-separator="^\n---\n$" data-vertical="^\n--\n$">
26
+ <script type="text/template">
27
+ ## Slide 1.1
28
+
29
+ --
30
+
31
+ ## Slide 1.2
32
+
33
+ ---
34
+
35
+ ## Slide 2
36
+ </script>
37
+ </section>
38
+
39
+ </div>
40
+
41
+ </div>
42
+
43
+ <script src="../lib/js/head.min.js"></script>
44
+ <script src="../js/reveal.min.js"></script>
45
+ <script src="../plugin/markdown/marked.js"></script>
46
+ <script src="../plugin/markdown/markdown.js"></script>
47
+ <script src="qunit-1.12.0.js"></script>
48
+
49
+ <script src="test-markdown.js"></script>
50
+
51
+ </body>
52
+ </html>
@@ -0,0 +1,15 @@
1
+
2
+
3
+ Reveal.addEventListener( 'ready', function() {
4
+
5
+ QUnit.module( 'Markdown' );
6
+
7
+ test( 'Vertical separator', function() {
8
+ strictEqual( document.querySelectorAll( '.reveal .slides>section>section' ).length, 2, 'found two slides' );
9
+ });
10
+
11
+
12
+ } );
13
+
14
+ Reveal.initialize();
15
+
@@ -0,0 +1,62 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="utf-8">
6
+
7
+ <title>reveal.js - Tests</title>
8
+
9
+ <link rel="stylesheet" href="../css/reveal.min.css">
10
+ <link rel="stylesheet" href="qunit-1.12.0.css">
11
+ </head>
12
+
13
+ <body style="overflow: auto;">
14
+
15
+ <div id="qunit"></div>
16
+ <div id="qunit-fixture"></div>
17
+
18
+ <div class="reveal" style="display: none;">
19
+
20
+ <div class="slides">
21
+
22
+ <section>
23
+ <h1>1</h1>
24
+ </section>
25
+
26
+ <section>
27
+ <section>
28
+ <h1>2.1</h1>
29
+ </section>
30
+ <section>
31
+ <h1>2.2</h1>
32
+ </section>
33
+ <section>
34
+ <h1>2.3</h1>
35
+ </section>
36
+ </section>
37
+
38
+ <section>
39
+ <h1>4</h1>
40
+ <ul>
41
+ <li class="fragment">4.1</li>
42
+ <li class="fragment">4.2</li>
43
+ <li class="fragment">4.3</li>
44
+ </ul>
45
+ </section>
46
+
47
+ <section>
48
+ <h1>4</h1>
49
+ </section>
50
+
51
+ </div>
52
+
53
+ </div>
54
+
55
+ <script src="../lib/js/head.min.js"></script>
56
+ <script src="../js/reveal.min.js"></script>
57
+ <script src="qunit-1.12.0.js"></script>
58
+
59
+ <script src="test.js"></script>
60
+
61
+ </body>
62
+ </html>
@@ -0,0 +1,353 @@
1
+
2
+ // These tests expect the DOM to contain a presentation
3
+ // with the following slide structure:
4
+ //
5
+ // 1
6
+ // 2 - Three sub-slides
7
+ // 3 - Three fragment elements
8
+ // 4
9
+
10
+
11
+ Reveal.addEventListener( 'ready', function() {
12
+
13
+
14
+ // ---------------------------------------------------------------
15
+ // API TESTS
16
+
17
+ QUnit.module( 'API' );
18
+
19
+ test( 'Reveal.isReady', function() {
20
+ strictEqual( Reveal.isReady(), true, 'returns true' );
21
+ });
22
+
23
+ test( 'Reveal.isOverview', function() {
24
+ strictEqual( Reveal.isOverview(), false, 'false by default' );
25
+
26
+ Reveal.toggleOverview();
27
+ strictEqual( Reveal.isOverview(), true, 'true after toggling on' );
28
+
29
+ Reveal.toggleOverview();
30
+ strictEqual( Reveal.isOverview(), false, 'false after toggling off' );
31
+ });
32
+
33
+ test( 'Reveal.isPaused', function() {
34
+ strictEqual( Reveal.isPaused(), false, 'false by default' );
35
+
36
+ Reveal.togglePause();
37
+ strictEqual( Reveal.isPaused(), true, 'true after pausing' );
38
+
39
+ Reveal.togglePause();
40
+ strictEqual( Reveal.isPaused(), false, 'false after resuming' );
41
+ });
42
+
43
+ test( 'Reveal.isFirstSlide', function() {
44
+ Reveal.slide( 0, 0 );
45
+ strictEqual( Reveal.isFirstSlide(), true, 'true after Reveal.slide( 0, 0 )' );
46
+
47
+ Reveal.slide( 1, 0 );
48
+ strictEqual( Reveal.isFirstSlide(), false, 'false after Reveal.slide( 1, 0 )' );
49
+
50
+ Reveal.slide( 0, 0 );
51
+ strictEqual( Reveal.isFirstSlide(), true, 'true after Reveal.slide( 0, 0 )' );
52
+ });
53
+
54
+ test( 'Reveal.isLastSlide', function() {
55
+ Reveal.slide( 0, 0 );
56
+ strictEqual( Reveal.isLastSlide(), false, 'false after Reveal.slide( 0, 0 )' );
57
+
58
+ var lastSlideIndex = document.querySelectorAll( '.reveal .slides>section' ).length - 1;
59
+
60
+ Reveal.slide( lastSlideIndex, 0 );
61
+ strictEqual( Reveal.isLastSlide(), true, 'true after Reveal.slide( ', 0+ lastSlideIndex +' )' );
62
+
63
+ Reveal.slide( 0, 0 );
64
+ strictEqual( Reveal.isLastSlide(), false, 'false after Reveal.slide( 0, 0 )' );
65
+ });
66
+
67
+ test( 'Reveal.getIndices', function() {
68
+ var indices = Reveal.getIndices();
69
+
70
+ ok( typeof indices.hasOwnProperty( 'h' ), 'h exists' );
71
+ ok( typeof indices.hasOwnProperty( 'v' ), 'v exists' );
72
+ ok( typeof indices.hasOwnProperty( 'f' ), 'f exists' );
73
+
74
+ Reveal.slide( 1, 0 );
75
+ ok( Reveal.getIndices().h === 1 && Reveal.getIndices().v === 0, 'h 1, v 0' );
76
+
77
+ Reveal.slide( 1, 2 );
78
+ ok( Reveal.getIndices().h === 1 && Reveal.getIndices().v === 2, 'h 1, v 2' );
79
+
80
+ Reveal.slide( 0, 0 );
81
+ });
82
+
83
+ test( 'Reveal.getSlide', function() {
84
+ var firstSlide = document.querySelector( '.reveal .slides>section:first-child' );
85
+
86
+ equal( Reveal.getSlide( 0 ), firstSlide, 'gets correct first slide' );
87
+
88
+ strictEqual( Reveal.getSlide( 100 ), undefined, 'returns undefined when slide can\'t be found' );
89
+ });
90
+
91
+ test( 'Reveal.getPreviousSlide/getCurrentSlide', function() {
92
+ Reveal.slide( 0, 0 );
93
+ Reveal.slide( 1, 0 );
94
+
95
+ var firstSlide = document.querySelector( '.reveal .slides>section:first-child' );
96
+ var secondSlide = document.querySelector( '.reveal .slides>section:nth-child(2)>section' );
97
+
98
+ equal( Reveal.getPreviousSlide(), firstSlide, 'previous is slide #0' );
99
+ equal( Reveal.getCurrentSlide(), secondSlide, 'current is slide #1' );
100
+ });
101
+
102
+ test( 'Reveal.getScale', function() {
103
+ ok( typeof Reveal.getScale() === 'number', 'has scale' );
104
+ });
105
+
106
+ test( 'Reveal.getConfig', function() {
107
+ ok( typeof Reveal.getConfig() === 'object', 'has config' );
108
+ });
109
+
110
+ test( 'Reveal.configure', function() {
111
+ strictEqual( Reveal.getConfig().loop, false, '"loop" is false to start with' );
112
+
113
+ Reveal.configure({ loop: true });
114
+ strictEqual( Reveal.getConfig().loop, true, '"loop" has changed to true' );
115
+
116
+ Reveal.configure({ loop: false, customTestValue: 1 });
117
+ strictEqual( Reveal.getConfig().customTestValue, 1, 'supports custom values' );
118
+ });
119
+
120
+ test( 'Reveal.availableRoutes', function() {
121
+ Reveal.slide( 0, 0 );
122
+ deepEqual( Reveal.availableRoutes(), { left: false, up: false, down: false, right: true }, 'correct for first slide' );
123
+
124
+ Reveal.slide( 1, 0 );
125
+ deepEqual( Reveal.availableRoutes(), { left: true, up: false, down: true, right: true }, 'correct for vertical slide' );
126
+ });
127
+
128
+ test( 'Reveal.next', function() {
129
+ Reveal.slide( 0, 0 );
130
+
131
+ // Step through the vertical child slides
132
+ Reveal.next();
133
+ deepEqual( Reveal.getIndices(), { h: 1, v: 0, f: undefined } );
134
+
135
+ Reveal.next();
136
+ deepEqual( Reveal.getIndices(), { h: 1, v: 1, f: undefined } );
137
+
138
+ Reveal.next();
139
+ deepEqual( Reveal.getIndices(), { h: 1, v: 2, f: undefined } );
140
+
141
+ // There's fragments on this slide
142
+ Reveal.next();
143
+ deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 0 } );
144
+
145
+ Reveal.next();
146
+ deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 1 } );
147
+
148
+ Reveal.next();
149
+ deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 2 } );
150
+
151
+ Reveal.next();
152
+ deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 3 } );
153
+
154
+ Reveal.next();
155
+ deepEqual( Reveal.getIndices(), { h: 3, v: 0, f: undefined } );
156
+
157
+ // We're at the end, this should have no effect
158
+ Reveal.next();
159
+ deepEqual( Reveal.getIndices(), { h: 3, v: 0, f: undefined } );
160
+ });
161
+
162
+
163
+ // ---------------------------------------------------------------
164
+ // FRAGMENT TESTS
165
+
166
+ QUnit.module( 'Fragments' );
167
+
168
+ test( 'Sliding to fragments', function() {
169
+ Reveal.slide( 2, 0, 0 );
170
+ deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 0 }, 'Reveal.slide( 2, 0, 0 )' );
171
+
172
+ Reveal.slide( 2, 0, 2 );
173
+ deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 2 }, 'Reveal.slide( 2, 0, 2 )' );
174
+
175
+ Reveal.slide( 2, 0, 1 );
176
+ deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 1 }, 'Reveal.slide( 2, 0, 1 )' );
177
+ });
178
+
179
+ test( 'Stepping through fragments', function() {
180
+ Reveal.slide( 2, 0, 0 );
181
+
182
+ // forwards:
183
+
184
+ Reveal.next();
185
+ deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 1 }, 'next() goes to next fragment' );
186
+
187
+ Reveal.right();
188
+ deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 2 }, 'right() goes to next fragment' );
189
+
190
+ Reveal.down();
191
+ deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 3 }, 'down() goes to next fragment' );
192
+
193
+ Reveal.down(); // moves to f #3
194
+
195
+ // backwards:
196
+
197
+ Reveal.prev();
198
+ deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 2 }, 'prev() goes to prev fragment' );
199
+
200
+ Reveal.left();
201
+ deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 1 }, 'left() goes to prev fragment' );
202
+
203
+ Reveal.up();
204
+ deepEqual( Reveal.getIndices(), { h: 2, v: 0, f: 0 }, 'left() goes to prev fragment' );
205
+ });
206
+
207
+ asyncTest( 'fragmentshown event', function() {
208
+ expect( 2 );
209
+
210
+ var _onEvent = function( event ) {
211
+ ok( true, 'event fired' );
212
+ }
213
+
214
+ Reveal.addEventListener( 'fragmentshown', _onEvent );
215
+
216
+ Reveal.slide( 2, 0 );
217
+ Reveal.slide( 2, 0 ); // should do nothing
218
+ Reveal.slide( 2, 0, 0 ); // should do nothing
219
+ Reveal.next();
220
+ Reveal.next();
221
+ Reveal.prev(); // shouldn't fire fragmentshown
222
+
223
+ start();
224
+
225
+ Reveal.removeEventListener( 'fragmentshown', _onEvent );
226
+ });
227
+
228
+ asyncTest( 'fragmenthidden event', function() {
229
+ expect( 2 );
230
+
231
+ var _onEvent = function( event ) {
232
+ ok( true, 'event fired' );
233
+ }
234
+
235
+ Reveal.addEventListener( 'fragmenthidden', _onEvent );
236
+
237
+ Reveal.slide( 2, 0, 2 );
238
+ Reveal.slide( 2, 0, 2 ); // should do nothing
239
+ Reveal.prev();
240
+ Reveal.prev();
241
+ Reveal.next(); // shouldn't fire fragmenthidden
242
+
243
+ start();
244
+
245
+ Reveal.removeEventListener( 'fragmenthidden', _onEvent );
246
+ });
247
+
248
+
249
+ // ---------------------------------------------------------------
250
+ // CONFIGURATION VALUES
251
+
252
+ QUnit.module( 'Configuration' );
253
+
254
+ test( 'Controls', function() {
255
+ var controlsElement = document.querySelector( '.reveal>.controls' );
256
+
257
+ Reveal.configure({ controls: false });
258
+ equal( controlsElement.style.display, 'none', 'controls are hidden' );
259
+
260
+ Reveal.configure({ controls: true });
261
+ equal( controlsElement.style.display, 'block', 'controls are visible' );
262
+ });
263
+
264
+ test( 'Progress', function() {
265
+ var progressElement = document.querySelector( '.reveal>.progress' );
266
+
267
+ Reveal.configure({ progress: false });
268
+ equal( progressElement.style.display, 'none', 'progress are hidden' );
269
+
270
+ Reveal.configure({ progress: true });
271
+ equal( progressElement.style.display, 'block', 'progress are visible' );
272
+ });
273
+
274
+ test( 'Loop', function() {
275
+ Reveal.configure({ loop: true });
276
+
277
+ Reveal.slide( 0, 0 );
278
+
279
+ Reveal.left();
280
+ notEqual( Reveal.getIndices().h, 0, 'looped from start to end' );
281
+
282
+ Reveal.right();
283
+ equal( Reveal.getIndices().h, 0, 'looped from end to start' );
284
+
285
+ Reveal.configure({ loop: false });
286
+ });
287
+
288
+
289
+ // ---------------------------------------------------------------
290
+ // EVENT TESTS
291
+
292
+ QUnit.module( 'Events' );
293
+
294
+ asyncTest( 'slidechanged', function() {
295
+ expect( 3 );
296
+
297
+ var _onEvent = function( event ) {
298
+ ok( true, 'event fired' );
299
+ }
300
+
301
+ Reveal.addEventListener( 'slidechanged', _onEvent );
302
+
303
+ Reveal.slide( 1, 0 ); // should trigger
304
+ Reveal.slide( 1, 0 ); // should do nothing
305
+ Reveal.next(); // should trigger
306
+ Reveal.slide( 3, 0 ); // should trigger
307
+ Reveal.next(); // should do nothing
308
+
309
+ start();
310
+
311
+ Reveal.removeEventListener( 'slidechanged', _onEvent );
312
+
313
+ });
314
+
315
+ asyncTest( 'paused', function() {
316
+ expect( 1 );
317
+
318
+ var _onEvent = function( event ) {
319
+ ok( true, 'event fired' );
320
+ }
321
+
322
+ Reveal.addEventListener( 'paused', _onEvent );
323
+
324
+ Reveal.togglePause();
325
+ Reveal.togglePause();
326
+
327
+ start();
328
+
329
+ Reveal.removeEventListener( 'paused', _onEvent );
330
+ });
331
+
332
+ asyncTest( 'resumed', function() {
333
+ expect( 1 );
334
+
335
+ var _onEvent = function( event ) {
336
+ ok( true, 'event fired' );
337
+ }
338
+
339
+ Reveal.addEventListener( 'resumed', _onEvent );
340
+
341
+ Reveal.togglePause();
342
+ Reveal.togglePause();
343
+
344
+ start();
345
+
346
+ Reveal.removeEventListener( 'resumed', _onEvent );
347
+ });
348
+
349
+
350
+ } );
351
+
352
+ Reveal.initialize();
353
+