slippery 0.3.0 → 0.4.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.
Files changed (212) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -0
  3. data/assets/deck.js/core/deck.core.css +60 -0
  4. data/assets/deck.js/core/deck.core.js +728 -0
  5. data/assets/deck.js/core/deck.core.scss +65 -0
  6. data/assets/deck.js/core/print.css +25 -0
  7. data/assets/deck.js/core/print.scss +14 -0
  8. data/assets/deck.js/css/common.css +216 -0
  9. data/assets/deck.js/css/common.scss +233 -0
  10. data/assets/deck.js/css/home.css +790 -0
  11. data/assets/deck.js/css/home.scss +892 -0
  12. data/assets/deck.js/extensions/goto/deck.goto.css +36 -0
  13. data/assets/deck.js/extensions/goto/deck.goto.html +7 -0
  14. data/assets/deck.js/extensions/goto/deck.goto.js +190 -0
  15. data/assets/deck.js/extensions/goto/deck.goto.scss +39 -0
  16. data/assets/deck.js/extensions/hash/deck.hash.css +13 -0
  17. data/assets/deck.js/extensions/hash/deck.hash.html +2 -0
  18. data/assets/deck.js/extensions/hash/deck.hash.js +145 -0
  19. data/assets/deck.js/extensions/hash/deck.hash.scss +13 -0
  20. data/assets/deck.js/extensions/menu/deck.menu.css +45 -0
  21. data/assets/deck.js/extensions/menu/deck.menu.js +225 -0
  22. data/assets/deck.js/extensions/menu/deck.menu.scss +55 -0
  23. data/assets/deck.js/extensions/navigation/deck.navigation.css +42 -0
  24. data/assets/deck.js/extensions/navigation/deck.navigation.html +5 -0
  25. data/assets/deck.js/extensions/navigation/deck.navigation.js +94 -0
  26. data/assets/deck.js/extensions/navigation/deck.navigation.scss +44 -0
  27. data/assets/deck.js/extensions/scale/deck.scale.css +20 -0
  28. data/assets/deck.js/extensions/scale/deck.scale.js +190 -0
  29. data/assets/deck.js/extensions/scale/deck.scale.scss +22 -0
  30. data/assets/deck.js/extensions/status/deck.status.css +18 -0
  31. data/assets/deck.js/extensions/status/deck.status.html +6 -0
  32. data/assets/deck.js/extensions/status/deck.status.js +108 -0
  33. data/assets/deck.js/extensions/status/deck.status.scss +18 -0
  34. data/assets/deck.js/modernizr.custom.js +4 -0
  35. data/assets/deck.js/themes/style/_reset.scss +300 -0
  36. data/assets/deck.js/themes/style/neon.css +421 -0
  37. data/assets/deck.js/themes/style/neon.scss +148 -0
  38. data/assets/deck.js/themes/style/swiss.css +389 -0
  39. data/assets/deck.js/themes/style/swiss.scss +109 -0
  40. data/assets/deck.js/themes/style/web-2.0.css +500 -0
  41. data/assets/deck.js/themes/style/web-2.0.scss +228 -0
  42. data/assets/deck.js/themes/transition/fade.css +35 -0
  43. data/assets/deck.js/themes/transition/fade.scss +59 -0
  44. data/assets/deck.js/themes/transition/horizontal-slide.css +53 -0
  45. data/assets/deck.js/themes/transition/horizontal-slide.scss +72 -0
  46. data/assets/deck.js/themes/transition/vertical-slide.css +67 -0
  47. data/assets/deck.js/themes/transition/vertical-slide.scss +92 -0
  48. data/assets/highlight.js/CHANGES.md +953 -0
  49. data/assets/highlight.js/LICENSE +24 -0
  50. data/assets/highlight.js/README.md +101 -0
  51. data/assets/highlight.js/README.ru.md +101 -0
  52. data/assets/highlight.js/highlight-0.8.default.min.css +1 -0
  53. data/assets/highlight.js/highlight-0.8.min.js +1 -0
  54. data/assets/highlight.js/highlight.pack.js +1 -0
  55. data/assets/highlight.js/styles/arta.css +141 -0
  56. data/assets/highlight.js/styles/ascetic.css +53 -0
  57. data/assets/highlight.js/styles/atelier-dune.dark.css +95 -0
  58. data/assets/highlight.js/styles/atelier-dune.light.css +95 -0
  59. data/assets/highlight.js/styles/atelier-forest.dark.css +95 -0
  60. data/assets/highlight.js/styles/atelier-forest.light.css +95 -0
  61. data/assets/highlight.js/styles/atelier-heath.dark.css +95 -0
  62. data/assets/highlight.js/styles/atelier-heath.light.css +95 -0
  63. data/assets/highlight.js/styles/atelier-lakeside.dark.css +95 -0
  64. data/assets/highlight.js/styles/atelier-lakeside.light.css +95 -0
  65. data/assets/highlight.js/styles/atelier-seaside.dark.css +95 -0
  66. data/assets/highlight.js/styles/atelier-seaside.light.css +95 -0
  67. data/assets/highlight.js/styles/brown_paper.css +105 -0
  68. data/assets/highlight.js/styles/brown_papersq.png +0 -0
  69. data/assets/highlight.js/styles/codepen-embed.css +108 -0
  70. data/assets/highlight.js/styles/color-brewer.css +169 -0
  71. data/assets/highlight.js/styles/dark.css +105 -0
  72. data/assets/highlight.js/styles/default.css +153 -0
  73. data/assets/highlight.js/styles/docco.css +136 -0
  74. data/assets/highlight.js/styles/far.css +112 -0
  75. data/assets/highlight.js/styles/foundation.css +136 -0
  76. data/assets/highlight.js/styles/github.css +127 -0
  77. data/assets/highlight.js/styles/googlecode.css +148 -0
  78. data/assets/highlight.js/styles/hybrid.css +171 -0
  79. data/assets/highlight.js/styles/idea.css +126 -0
  80. data/assets/highlight.js/styles/ir_black.css +110 -0
  81. data/assets/highlight.js/styles/kimbie.dark.css +96 -0
  82. data/assets/highlight.js/styles/kimbie.light.css +96 -0
  83. data/assets/highlight.js/styles/magula.css +122 -0
  84. data/assets/highlight.js/styles/mono-blue.css +70 -0
  85. data/assets/highlight.js/styles/monokai.css +127 -0
  86. data/assets/highlight.js/styles/monokai_sublime.css +148 -0
  87. data/assets/highlight.js/styles/obsidian.css +154 -0
  88. data/assets/highlight.js/styles/paraiso.dark.css +95 -0
  89. data/assets/highlight.js/styles/paraiso.light.css +95 -0
  90. data/assets/highlight.js/styles/pojoaque.css +108 -0
  91. data/assets/highlight.js/styles/pojoaque.jpg +0 -0
  92. data/assets/highlight.js/styles/railscasts.css +185 -0
  93. data/assets/highlight.js/styles/rainbow.css +109 -0
  94. data/assets/highlight.js/styles/school_book.css +113 -0
  95. data/assets/highlight.js/styles/school_book.png +0 -0
  96. data/assets/highlight.js/styles/solarized_dark.css +109 -0
  97. data/assets/highlight.js/styles/solarized_light.css +109 -0
  98. data/assets/highlight.js/styles/sunburst.css +165 -0
  99. data/assets/highlight.js/styles/tomorrow-night-blue.css +95 -0
  100. data/assets/highlight.js/styles/tomorrow-night-bright.css +94 -0
  101. data/assets/highlight.js/styles/tomorrow-night-eighties.css +94 -0
  102. data/assets/highlight.js/styles/tomorrow-night.css +95 -0
  103. data/assets/highlight.js/styles/tomorrow.css +92 -0
  104. data/assets/highlight.js/styles/vs.css +94 -0
  105. data/assets/highlight.js/styles/xcode.css +159 -0
  106. data/assets/highlight.js/styles/zenburn.css +119 -0
  107. data/assets/jquery/jquery-2.1.0.min.js +4 -0
  108. data/assets/reveal.js/css/print/paper.css +1 -1
  109. data/assets/reveal.js/css/print/pdf.css +2 -2
  110. data/assets/reveal.js/css/reveal.css +372 -108
  111. data/assets/reveal.js/css/reveal.min.css +2 -2
  112. data/assets/reveal.js/css/theme/README.md +3 -1
  113. data/assets/reveal.js/css/theme/beige.css +7 -1
  114. data/assets/reveal.js/css/theme/blood.css +175 -0
  115. data/assets/reveal.js/css/theme/default.css +7 -1
  116. data/assets/reveal.js/css/theme/moon.css +7 -1
  117. data/assets/reveal.js/css/theme/night.css +7 -1
  118. data/assets/reveal.js/css/theme/serif.css +7 -1
  119. data/assets/reveal.js/css/theme/simple.css +7 -1
  120. data/assets/reveal.js/css/theme/sky.css +7 -1
  121. data/assets/reveal.js/css/theme/solarized.css +7 -1
  122. data/assets/reveal.js/css/theme/source/blood.scss +91 -0
  123. data/assets/reveal.js/css/theme/template/settings.scss +1 -0
  124. data/assets/reveal.js/css/theme/template/theme.scss +9 -2
  125. data/assets/reveal.js/js/reveal.js +1238 -433
  126. data/assets/reveal.js/js/reveal.min.js +4 -3
  127. data/assets/reveal.js/lib/css/zenburn.css +16 -17
  128. data/assets/reveal.js/plugin/highlight/highlight.js +3 -2
  129. data/assets/reveal.js/plugin/leap/leap.js +3 -0
  130. data/assets/reveal.js/plugin/markdown/example.html +37 -5
  131. data/assets/reveal.js/plugin/markdown/example.md +2 -0
  132. data/assets/reveal.js/plugin/markdown/markdown.js +373 -171
  133. data/assets/reveal.js/plugin/math/math.js +64 -0
  134. data/assets/reveal.js/plugin/multiplex/master.js +2 -1
  135. data/assets/reveal.js/plugin/notes/notes.html +33 -19
  136. data/assets/reveal.js/plugin/notes/notes.js +25 -47
  137. data/assets/reveal.js/plugin/remotes/remotes.js +4 -4
  138. data/assets/reveal.js/plugin/zoom-js/zoom.js +3 -1
  139. data/assets/reveal.old/css/print/paper.css +176 -0
  140. data/assets/reveal.old/css/print/pdf.css +190 -0
  141. data/assets/reveal.old/css/reveal.css +1616 -0
  142. data/assets/reveal.old/css/reveal.min.css +7 -0
  143. data/assets/reveal.old/css/theme/README.md +23 -0
  144. data/assets/reveal.old/css/theme/beige.css +142 -0
  145. data/assets/reveal.old/css/theme/default.css +142 -0
  146. data/assets/reveal.old/css/theme/moon.css +142 -0
  147. data/assets/reveal.old/css/theme/night.css +130 -0
  148. data/assets/reveal.old/css/theme/serif.css +132 -0
  149. data/assets/reveal.old/css/theme/simple.css +132 -0
  150. data/assets/reveal.old/css/theme/sky.css +139 -0
  151. data/assets/reveal.old/css/theme/solarized.css +142 -0
  152. data/assets/reveal.old/css/theme/source/beige.scss +50 -0
  153. data/assets/reveal.old/css/theme/source/default.scss +42 -0
  154. data/assets/reveal.old/css/theme/source/moon.scss +68 -0
  155. data/assets/reveal.old/css/theme/source/night.scss +35 -0
  156. data/assets/reveal.old/css/theme/source/serif.scss +35 -0
  157. data/assets/reveal.old/css/theme/source/simple.scss +38 -0
  158. data/assets/reveal.old/css/theme/source/sky.scss +46 -0
  159. data/assets/reveal.old/css/theme/source/solarized.scss +74 -0
  160. data/assets/reveal.old/css/theme/template/mixins.scss +29 -0
  161. data/assets/reveal.old/css/theme/template/settings.scss +33 -0
  162. data/assets/reveal.old/css/theme/template/theme.scss +163 -0
  163. data/assets/{reveal.js → reveal.old}/js/head.min.js +0 -0
  164. data/assets/reveal.old/js/reveal.js +2577 -0
  165. data/assets/reveal.old/js/reveal.min.js +8 -0
  166. data/assets/reveal.old/lib/css/zenburn.css +115 -0
  167. data/assets/reveal.old/lib/font/league_gothic-webfont.eot +0 -0
  168. data/assets/reveal.old/lib/font/league_gothic-webfont.svg +230 -0
  169. data/assets/reveal.old/lib/font/league_gothic-webfont.ttf +0 -0
  170. data/assets/reveal.old/lib/font/league_gothic-webfont.woff +0 -0
  171. data/assets/reveal.old/lib/font/league_gothic_license +2 -0
  172. data/assets/reveal.old/lib/js/classList.js +2 -0
  173. data/assets/reveal.old/lib/js/head.min.js +8 -0
  174. data/assets/reveal.old/lib/js/html5shiv.js +7 -0
  175. data/assets/reveal.old/plugin/highlight/highlight.js +31 -0
  176. data/assets/reveal.old/plugin/leap/leap.js +154 -0
  177. data/assets/reveal.old/plugin/markdown/example.html +97 -0
  178. data/assets/reveal.old/plugin/markdown/example.md +29 -0
  179. data/assets/reveal.old/plugin/markdown/markdown.js +190 -0
  180. data/assets/reveal.old/plugin/markdown/marked.js +37 -0
  181. data/assets/reveal.old/plugin/multiplex/client.js +13 -0
  182. data/assets/reveal.old/plugin/multiplex/index.js +56 -0
  183. data/assets/reveal.old/plugin/multiplex/master.js +50 -0
  184. data/assets/reveal.old/plugin/notes-server/client.js +57 -0
  185. data/assets/reveal.old/plugin/notes-server/index.js +59 -0
  186. data/assets/reveal.old/plugin/notes-server/notes.html +142 -0
  187. data/assets/reveal.old/plugin/notes/notes.html +253 -0
  188. data/assets/reveal.old/plugin/notes/notes.js +100 -0
  189. data/assets/reveal.old/plugin/postmessage/example.html +39 -0
  190. data/assets/reveal.old/plugin/postmessage/postmessage.js +42 -0
  191. data/assets/reveal.old/plugin/print-pdf/print-pdf.js +44 -0
  192. data/assets/reveal.old/plugin/remotes/remotes.js +39 -0
  193. data/assets/reveal.old/plugin/search/search.js +196 -0
  194. data/assets/reveal.old/plugin/zoom-js/zoom.js +256 -0
  195. data/bin/slippery +1 -0
  196. data/code_of_conduct.md +32 -0
  197. data/lib/slippery.rb +5 -3
  198. data/lib/slippery/document.rb +2 -2
  199. data/lib/slippery/presentation.rb +10 -1
  200. data/lib/slippery/processor.rb +18 -0
  201. data/lib/slippery/processor_helpers.rb +16 -2
  202. data/lib/slippery/processors/add_highlight.rb +9 -2
  203. data/lib/slippery/processors/deck_js.rb +81 -0
  204. data/lib/slippery/processors/fathom_js.rb +31 -0
  205. data/lib/slippery/processors/impress_js/add_impress_js.rb +2 -2
  206. data/lib/slippery/processors/jquery.rb +12 -0
  207. data/lib/slippery/processors/reveal_js/add_reveal_js.rb +12 -9
  208. data/lib/slippery/rake_tasks.rb +59 -31
  209. data/lib/slippery/version.rb +1 -1
  210. data/slippery.gemspec +5 -4
  211. metadata +215 -33
  212. data/lib/slippery/converter.rb +0 -132
@@ -0,0 +1,256 @@
1
+ // Custom reveal.js integration
2
+ (function(){
3
+ var isEnabled = true;
4
+
5
+ document.querySelector( '.reveal' ).addEventListener( 'mousedown', function( event ) {
6
+ if( event.altKey && isEnabled ) {
7
+ event.preventDefault();
8
+ zoom.to({ element: event.target, pan: false });
9
+ }
10
+ } );
11
+
12
+ Reveal.addEventListener( 'overviewshown', function() { isEnabled = false; } );
13
+ Reveal.addEventListener( 'overviewhidden', function() { isEnabled = true; } );
14
+ })();
15
+
16
+ /*!
17
+ * zoom.js 0.2 (modified version for use with reveal.js)
18
+ * http://lab.hakim.se/zoom-js
19
+ * MIT licensed
20
+ *
21
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
22
+ */
23
+ var zoom = (function(){
24
+
25
+ // The current zoom level (scale)
26
+ var level = 1;
27
+
28
+ // The current mouse position, used for panning
29
+ var mouseX = 0,
30
+ mouseY = 0;
31
+
32
+ // Timeout before pan is activated
33
+ var panEngageTimeout = -1,
34
+ panUpdateInterval = -1;
35
+
36
+ var currentOptions = null;
37
+
38
+ // Check for transform support so that we can fallback otherwise
39
+ var supportsTransforms = 'WebkitTransform' in document.body.style ||
40
+ 'MozTransform' in document.body.style ||
41
+ 'msTransform' in document.body.style ||
42
+ 'OTransform' in document.body.style ||
43
+ 'transform' in document.body.style;
44
+
45
+ if( supportsTransforms ) {
46
+ // The easing that will be applied when we zoom in/out
47
+ document.body.style.transition = 'transform 0.8s ease';
48
+ document.body.style.OTransition = '-o-transform 0.8s ease';
49
+ document.body.style.msTransition = '-ms-transform 0.8s ease';
50
+ document.body.style.MozTransition = '-moz-transform 0.8s ease';
51
+ document.body.style.WebkitTransition = '-webkit-transform 0.8s ease';
52
+ }
53
+
54
+ // Zoom out if the user hits escape
55
+ document.addEventListener( 'keyup', function( event ) {
56
+ if( level !== 1 && event.keyCode === 27 ) {
57
+ zoom.out();
58
+ }
59
+ }, false );
60
+
61
+ // Monitor mouse movement for panning
62
+ document.addEventListener( 'mousemove', function( event ) {
63
+ if( level !== 1 ) {
64
+ mouseX = event.clientX;
65
+ mouseY = event.clientY;
66
+ }
67
+ }, false );
68
+
69
+ /**
70
+ * Applies the CSS required to zoom in, prioritizes use of CSS3
71
+ * transforms but falls back on zoom for IE.
72
+ *
73
+ * @param {Number} pageOffsetX
74
+ * @param {Number} pageOffsetY
75
+ * @param {Number} elementOffsetX
76
+ * @param {Number} elementOffsetY
77
+ * @param {Number} scale
78
+ */
79
+ function magnify( pageOffsetX, pageOffsetY, elementOffsetX, elementOffsetY, scale ) {
80
+
81
+ if( supportsTransforms ) {
82
+ var origin = pageOffsetX +'px '+ pageOffsetY +'px',
83
+ transform = 'translate('+ -elementOffsetX +'px,'+ -elementOffsetY +'px) scale('+ scale +')';
84
+
85
+ document.body.style.transformOrigin = origin;
86
+ document.body.style.OTransformOrigin = origin;
87
+ document.body.style.msTransformOrigin = origin;
88
+ document.body.style.MozTransformOrigin = origin;
89
+ document.body.style.WebkitTransformOrigin = origin;
90
+
91
+ document.body.style.transform = transform;
92
+ document.body.style.OTransform = transform;
93
+ document.body.style.msTransform = transform;
94
+ document.body.style.MozTransform = transform;
95
+ document.body.style.WebkitTransform = transform;
96
+ }
97
+ else {
98
+ // Reset all values
99
+ if( scale === 1 ) {
100
+ document.body.style.position = '';
101
+ document.body.style.left = '';
102
+ document.body.style.top = '';
103
+ document.body.style.width = '';
104
+ document.body.style.height = '';
105
+ document.body.style.zoom = '';
106
+ }
107
+ // Apply scale
108
+ else {
109
+ document.body.style.position = 'relative';
110
+ document.body.style.left = ( - ( pageOffsetX + elementOffsetX ) / scale ) + 'px';
111
+ document.body.style.top = ( - ( pageOffsetY + elementOffsetY ) / scale ) + 'px';
112
+ document.body.style.width = ( scale * 100 ) + '%';
113
+ document.body.style.height = ( scale * 100 ) + '%';
114
+ document.body.style.zoom = scale;
115
+ }
116
+ }
117
+
118
+ level = scale;
119
+
120
+ if( level !== 1 && document.documentElement.classList ) {
121
+ document.documentElement.classList.add( 'zoomed' );
122
+ }
123
+ else {
124
+ document.documentElement.classList.remove( 'zoomed' );
125
+ }
126
+ }
127
+
128
+ /**
129
+ * Pan the document when the mosue cursor approaches the edges
130
+ * of the window.
131
+ */
132
+ function pan() {
133
+ var range = 0.12,
134
+ rangeX = window.innerWidth * range,
135
+ rangeY = window.innerHeight * range,
136
+ scrollOffset = getScrollOffset();
137
+
138
+ // Up
139
+ if( mouseY < rangeY ) {
140
+ window.scroll( scrollOffset.x, scrollOffset.y - ( 1 - ( mouseY / rangeY ) ) * ( 14 / level ) );
141
+ }
142
+ // Down
143
+ else if( mouseY > window.innerHeight - rangeY ) {
144
+ window.scroll( scrollOffset.x, scrollOffset.y + ( 1 - ( window.innerHeight - mouseY ) / rangeY ) * ( 14 / level ) );
145
+ }
146
+
147
+ // Left
148
+ if( mouseX < rangeX ) {
149
+ window.scroll( scrollOffset.x - ( 1 - ( mouseX / rangeX ) ) * ( 14 / level ), scrollOffset.y );
150
+ }
151
+ // Right
152
+ else if( mouseX > window.innerWidth - rangeX ) {
153
+ window.scroll( scrollOffset.x + ( 1 - ( window.innerWidth - mouseX ) / rangeX ) * ( 14 / level ), scrollOffset.y );
154
+ }
155
+ }
156
+
157
+ function getScrollOffset() {
158
+ return {
159
+ x: window.scrollX !== undefined ? window.scrollX : window.pageXOffset,
160
+ y: window.scrollY !== undefined ? window.scrollY : window.pageXYffset
161
+ }
162
+ }
163
+
164
+ return {
165
+ /**
166
+ * Zooms in on either a rectangle or HTML element.
167
+ *
168
+ * @param {Object} options
169
+ * - element: HTML element to zoom in on
170
+ * OR
171
+ * - x/y: coordinates in non-transformed space to zoom in on
172
+ * - width/height: the portion of the screen to zoom in on
173
+ * - scale: can be used instead of width/height to explicitly set scale
174
+ */
175
+ to: function( options ) {
176
+ // Due to an implementation limitation we can't zoom in
177
+ // to another element without zooming out first
178
+ if( level !== 1 ) {
179
+ zoom.out();
180
+ }
181
+ else {
182
+ options.x = options.x || 0;
183
+ options.y = options.y || 0;
184
+
185
+ // If an element is set, that takes precedence
186
+ if( !!options.element ) {
187
+ // Space around the zoomed in element to leave on screen
188
+ var padding = 20;
189
+
190
+ options.width = options.element.getBoundingClientRect().width + ( padding * 2 );
191
+ options.height = options.element.getBoundingClientRect().height + ( padding * 2 );
192
+ options.x = options.element.getBoundingClientRect().left - padding;
193
+ options.y = options.element.getBoundingClientRect().top - padding;
194
+ }
195
+
196
+ // If width/height values are set, calculate scale from those values
197
+ if( options.width !== undefined && options.height !== undefined ) {
198
+ options.scale = Math.max( Math.min( window.innerWidth / options.width, window.innerHeight / options.height ), 1 );
199
+ }
200
+
201
+ if( options.scale > 1 ) {
202
+ options.x *= options.scale;
203
+ options.y *= options.scale;
204
+
205
+ var scrollOffset = getScrollOffset();
206
+
207
+ if( options.element ) {
208
+ scrollOffset.x -= ( window.innerWidth - ( options.width * options.scale ) ) / 2;
209
+ }
210
+
211
+ magnify( scrollOffset.x, scrollOffset.y, options.x, options.y, options.scale );
212
+
213
+ if( options.pan !== false ) {
214
+
215
+ // Wait with engaging panning as it may conflict with the
216
+ // zoom transition
217
+ panEngageTimeout = setTimeout( function() {
218
+ panUpdateInterval = setInterval( pan, 1000 / 60 );
219
+ }, 800 );
220
+
221
+ }
222
+ }
223
+
224
+ currentOptions = options;
225
+ }
226
+ },
227
+
228
+ /**
229
+ * Resets the document zoom state to its default.
230
+ */
231
+ out: function() {
232
+ clearTimeout( panEngageTimeout );
233
+ clearInterval( panUpdateInterval );
234
+
235
+ var scrollOffset = getScrollOffset();
236
+
237
+ if( currentOptions && currentOptions.element ) {
238
+ scrollOffset.x -= ( window.innerWidth - ( currentOptions.width * currentOptions.scale ) ) / 2;
239
+ }
240
+
241
+ magnify( scrollOffset.x, scrollOffset.y, 0, 0, 1 );
242
+
243
+ level = 1;
244
+ },
245
+
246
+ // Alias
247
+ magnify: function( options ) { this.to( options ) },
248
+ reset: function() { this.out() },
249
+
250
+ zoomLevel: function() {
251
+ return level;
252
+ }
253
+ }
254
+
255
+ })();
256
+
@@ -0,0 +1 @@
1
+ #!/usr/bin/env ruby
@@ -0,0 +1,32 @@
1
+ # Contributor Code of Conduct
2
+
3
+ As contributors and maintainers of this project, we pledge to respect
4
+ all people who contribute through reporting issues, posting feature
5
+ requests, updating documentation, submitting pull requests or patches,
6
+ and other activities.
7
+
8
+ We are committed to making participation in this project a
9
+ harassment-free experience for everyone, regardless of level of
10
+ experience, gender, gender identity and expression, sexual
11
+ orientation, disability, personal appearance, body size, race, age, or
12
+ religion.
13
+
14
+ Examples of unacceptable behavior by participants include the use of
15
+ sexual language or imagery, derogatory comments or personal attacks,
16
+ trolling, public or private harassment, insults, or other
17
+ unprofessional conduct.
18
+
19
+ Project maintainers have the right and responsibility to remove, edit,
20
+ or reject comments, commits, code, wiki edits, issues, and other
21
+ contributions that are not aligned to this Code of Conduct. Project
22
+ maintainers who do not follow the Code of Conduct may be removed from
23
+ the project team.
24
+
25
+ Instances of abusive, harassing, or otherwise unacceptable behavior
26
+ may be reported by opening an issue or contacting one or more of the
27
+ project maintainers.
28
+
29
+ This Code of Conduct is adapted from the
30
+ [Contributor Covenant](http:contributor-covenant.org), version 1.0.0,
31
+ available at
32
+ [http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/)
@@ -3,8 +3,7 @@ require 'pathname'
3
3
  require 'open-uri'
4
4
  require 'forwardable'
5
5
 
6
- require 'kramdown'
7
- require 'hexp'
6
+ require 'hexp/kramdown'
8
7
  require 'concord'
9
8
  require 'asset_packer'
10
9
 
@@ -18,7 +17,6 @@ module Slippery
18
17
  end
19
18
 
20
19
  require 'slippery/version'
21
- require 'slippery/converter'
22
20
  require 'slippery/document'
23
21
  require 'slippery/presentation'
24
22
 
@@ -29,8 +27,12 @@ require 'slippery/processors/graphviz_dot'
29
27
  require 'slippery/processors/hr_to_sections'
30
28
  require 'slippery/processors/add_highlight'
31
29
 
30
+ require 'slippery/processor'
32
31
  require 'slippery/processors/impress_js/add_impress_js'
33
32
  require 'slippery/processors/impress_js/auto_offsets'
33
+ require 'slippery/processors/jquery'
34
+ require 'slippery/processors/fathom_js'
35
+ require 'slippery/processors/deck_js'
34
36
 
35
37
  require 'slippery/processors/reveal_js/add_reveal_js'
36
38
 
@@ -7,11 +7,11 @@ module Slippery
7
7
  end
8
8
 
9
9
  def kramdown_document
10
- @kramdown_document ||= Kramdown::Document.new(@markdown, input: 'GFM')
10
+ @kramdown_document ||= ::Kramdown::Document.new(@markdown, input: 'GFM')
11
11
  end
12
12
 
13
13
  def to_hexp
14
- @hexp ||= Slippery::Converter.new.convert(kramdown_document.root).to_hexp
14
+ @hexp ||= Hexp::Kramdown.convert(kramdown_document)
15
15
  end
16
16
  end
17
17
  end
@@ -4,7 +4,6 @@ module Slippery
4
4
 
5
5
  DEFAULT_OPTIONS = {
6
6
  type: :reveal_js,
7
- local: true,
8
7
  history: true
9
8
  }.freeze
10
9
 
@@ -23,6 +22,16 @@ module Slippery
23
22
  reveal_js: [
24
23
  Processors::HrToSections.new(H[:section]),
25
24
  Processors::RevealJs::AddRevealJs.new(js_options),
25
+ ],
26
+ fathom_js: [
27
+ Processors::HrToSections.new(H[:div, class: 'slide']),
28
+ Processors::JQuery.new(js_options),
29
+ Processors::FathomJs.new(js_options),
30
+ ],
31
+ deck_js: [
32
+ Processors::HrToSections.new(H[:section, class: 'slide']),
33
+ Processors::JQuery.new(js_options),
34
+ Processors::DeckJs.new(js_options),
26
35
  ]
27
36
  }[@options[:type]]
28
37
  end
@@ -0,0 +1,18 @@
1
+ module Slippery
2
+ class Processor
3
+ include ProcessorHelpers
4
+
5
+ def initialize(options)
6
+ @options = options
7
+ end
8
+
9
+ def options
10
+ if defaults = self.class.const_get(:DEFAULT_OPTIONS)
11
+ defaults.merge(@options)
12
+ else
13
+ @options
14
+ end
15
+ end
16
+
17
+ end
18
+ end
@@ -7,13 +7,14 @@ module Slippery
7
7
  def asset_uri(path)
8
8
  "file://" + Slippery::ROOT.join('assets', path).to_s
9
9
  end
10
+ module_function :asset_uri
10
11
 
11
12
  def include_local_javascript(element, path)
12
- element.add javascript_include_tag(path)
13
+ element.add javascript_include_tag(asset_uri(path))
13
14
  end
14
15
 
15
16
  def include_local_css(element, path)
16
- element.add stylesheet_link_tag(path)
17
+ element.add stylesheet_link_tag(asset_uri(path))
17
18
  end
18
19
 
19
20
  def javascript_include_tag(path)
@@ -28,7 +29,19 @@ module Slippery
28
29
  Hash[*attrs.flat_map { |k, v| ["data-#{k}", v] }]
29
30
  end
30
31
 
32
+ def hash_to_js(hsh)
33
+ hsh.map { |k, v| "#{k}:#{v.inspect}" }.join(',') #:(
34
+ end
35
+
36
+ def call(doc)
37
+ doc.process(*self.class.processors.map {|name| send(name) })
38
+ end
39
+
31
40
  module ClassMethods
41
+ def processors
42
+ @processors ||= []
43
+ end
44
+
32
45
  def processor(name, selector = nil, &blk)
33
46
  if selector
34
47
  define_method name do
@@ -37,6 +50,7 @@ module Slippery
37
50
  else
38
51
  define_method name { ->(node) { blk.call(node) } }
39
52
  end
53
+ processors << name
40
54
  end
41
55
  end
42
56
  end
@@ -1,6 +1,7 @@
1
1
  module Slippery
2
2
  module Processors
3
3
  class AddHighlight
4
+ include ProcessorHelpers
4
5
 
5
6
  DEFAULT_STYLE = :default
6
7
  DEFAULT_VERSION = '8.0'
@@ -11,9 +12,15 @@ module Slippery
11
12
  end
12
13
 
13
14
  def call(doc)
15
+ # css = "http://yandex.st/highlightjs/#{@version}/styles/#{@style}.min.css"
16
+ # js = "http://yandex.st/highlightjs/#{@version}/highlight.min.js"
17
+
18
+ js = asset_uri('highlight.js/highlight.pack.js')
19
+ css = asset_uri('highlight.js/highlight-0.8.default.min.css')
20
+
14
21
  doc.rewrite 'head' do |head|
15
- head <<= H[:link, rel: "stylesheet", href: "http://yandex.st/highlightjs/#{@version}/styles/#{@style}.min.css"]
16
- head <<= H[:script, src: "http://yandex.st/highlightjs/#{@version}/highlight.min.js"]
22
+ head <<= H[:link, rel: "stylesheet", href: css]
23
+ head <<= H[:script, src: js]
17
24
  head <<= H[:script, 'hljs.initHighlightingOnLoad();']
18
25
  end
19
26
  end