reveal-ck 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +8 -8
  2. data/bin/reveal-ck +18 -12
  3. data/lib/reveal-ck.rb +3 -10
  4. data/lib/reveal-ck/builders.rb +4 -0
  5. data/lib/reveal-ck/builders/build_task.rb +21 -0
  6. data/lib/reveal-ck/builders/builder.rb +27 -0
  7. data/lib/reveal-ck/builders/index_html.rb +85 -0
  8. data/lib/reveal-ck/builders/packaged_slides.rb +84 -0
  9. data/lib/reveal-ck/changers.rb +3 -0
  10. data/lib/reveal-ck/changers/slicer.rb +25 -0
  11. data/lib/reveal-ck/changers/splicer.rb +37 -0
  12. data/lib/reveal-ck/changers/string_replacer.rb +18 -0
  13. data/lib/reveal-ck/config.rb +51 -23
  14. data/lib/reveal-ck/presentation.rb +24 -15
  15. data/lib/reveal-ck/presentation_dsl.rb +20 -12
  16. data/lib/reveal-ck/slide.rb +3 -3
  17. data/lib/reveal-ck/templates.rb +3 -0
  18. data/lib/reveal-ck/templates/finder.rb +35 -0
  19. data/lib/reveal-ck/templates/processor.rb +32 -0
  20. data/lib/reveal-ck/templates/render_scope.rb +14 -0
  21. data/lib/reveal-ck/version.rb +1 -1
  22. data/rakelib/examples.rake +7 -0
  23. data/spec/data/{slicer → changers/slicer}/after_remove +0 -0
  24. data/spec/data/{slicer → changers/slicer}/before_remove +0 -0
  25. data/spec/data/{splicer → changers/splicer}/abcd +0 -0
  26. data/spec/data/{splicer → changers/splicer}/after_insert +0 -0
  27. data/spec/data/{splicer → changers/splicer}/before_insert +0 -0
  28. data/spec/data/{string_replacer → changers/string_replacer}/after_replace +0 -0
  29. data/spec/data/{string_replacer → changers/string_replacer}/before_replace +0 -0
  30. data/spec/data/config/full_config.toml +7 -0
  31. data/spec/data/config/partial_config.toml +1 -0
  32. data/spec/data/presentation/slides.haml +2 -0
  33. data/spec/data/presentation/slides.rb +5 -0
  34. data/spec/data/{dsl/slides.rb → presentation_dsl/dsl.rb} +4 -0
  35. data/spec/data/templates/finder/code/function.rb +3 -0
  36. data/spec/data/{template_finder/automated/automated.slim → templates/finder/quotes/create} +0 -0
  37. data/spec/data/{template_finder/automated/common.haml → templates/finder/templates/template_one.slim} +0 -0
  38. data/spec/data/{template_finder/custom/common.haml → templates/finder/templates/template_two.slim} +0 -0
  39. data/spec/data/{template_finder/custom/custom.slim → templates/finder/templates/text.slim} +0 -0
  40. data/spec/data/{haml → templates/processor}/basic.haml +0 -0
  41. data/spec/data/{slim → templates/processor}/basic.slim +0 -0
  42. data/spec/data/templates/render_scope/quote +2 -0
  43. data/spec/examples/programmatic_slides_spec.rb +12 -0
  44. data/spec/examples/slide_output_spec.rb +12 -0
  45. data/spec/lib/reveal-ck/builders/builder_spec.rb +39 -0
  46. data/spec/lib/reveal-ck/builders/packaged_slides_spec.rb +39 -0
  47. data/spec/lib/reveal-ck/changers/slicer_spec.rb +46 -0
  48. data/spec/lib/reveal-ck/changers/splicer_spec.rb +45 -0
  49. data/spec/lib/reveal-ck/changers/string_replacer_spec.rb +35 -0
  50. data/spec/lib/reveal-ck/config_spec.rb +68 -20
  51. data/spec/lib/reveal-ck/presentation_dsl_spec.rb +21 -11
  52. data/spec/lib/reveal-ck/presentation_spec.rb +40 -38
  53. data/spec/lib/reveal-ck/slide_spec.rb +3 -3
  54. data/spec/lib/reveal-ck/templates/finder_spec.rb +88 -0
  55. data/spec/lib/reveal-ck/templates/processor_spec.rb +31 -0
  56. data/spec/lib/reveal-ck/templates/render_scope_spec.rb +24 -0
  57. data/templates/{title.slim → intro.slim} +0 -0
  58. metadata +77 -71
  59. data/lib/reveal-ck/build_task.rb +0 -19
  60. data/lib/reveal-ck/builder.rb +0 -25
  61. data/lib/reveal-ck/file_slicer.rb +0 -23
  62. data/lib/reveal-ck/file_splicer.rb +0 -36
  63. data/lib/reveal-ck/file_string_replacer.rb +0 -16
  64. data/lib/reveal-ck/presentation_builder.rb +0 -94
  65. data/lib/reveal-ck/slide_builder.rb +0 -81
  66. data/lib/reveal-ck/slides_html_builder.rb +0 -39
  67. data/lib/reveal-ck/template_finder.rb +0 -33
  68. data/lib/reveal-ck/template_processor.rb +0 -28
  69. data/spec/data/config/config.toml +0 -6
  70. data/spec/data/html/converted_basic_haml.html +0 -10
  71. data/spec/data/html/converted_basic_slim.html +0 -10
  72. data/spec/data/html/reveal-js-index.html +0 -375
  73. data/spec/data/slides_html_builder/slides.haml +0 -3
  74. data/spec/data/slides_html_builder/slides.rb +0 -14
  75. data/spec/data/slides_html_builder/slides.slim +0 -2
  76. data/spec/lib/reveal-ck/builder_spec.rb +0 -37
  77. data/spec/lib/reveal-ck/file_slicer_spec.rb +0 -44
  78. data/spec/lib/reveal-ck/file_splicer_spec.rb +0 -43
  79. data/spec/lib/reveal-ck/file_string_replacer_spec.rb +0 -34
  80. data/spec/lib/reveal-ck/presentation_builder_spec.rb +0 -37
  81. data/spec/lib/reveal-ck/slides_html_builder_spec.rb +0 -102
  82. data/spec/lib/reveal-ck/template_finder_spec.rb +0 -87
  83. data/spec/lib/reveal-ck/template_processor_spec.rb +0 -29
@@ -1,81 +0,0 @@
1
- module RevealCK
2
- #
3
- # Public: A SlideBuilder knows how to build the index.html file (the
4
- # core slides) within a reveal.js presentation.
5
- #
6
- class SlideBuilder < Builder
7
-
8
- attr_reader :user_slides, :reveal_slides
9
-
10
- attr_reader :tasks
11
-
12
- attr_reader :config
13
-
14
- def initialize(args)
15
- @user_slides = args[:user_slides]
16
- @reveal_slides = args[:reveal_slides]
17
- @config = args[:config]
18
- end
19
-
20
- private
21
-
22
- def register_tasks
23
-
24
- @tasks = []
25
-
26
- remove_default_content reveal_slides
27
- add_user_content reveal_slides, user_slides
28
- replace_title reveal_slides, config.title
29
- replace_author reveal_slides, config.author
30
- replace_theme reveal_slides, config.theme
31
- end
32
-
33
- def remove_default_content(file)
34
- add_task 'Slicing out reveal.js default slides' do
35
- begin_line_num = 38 # Line where I see <div class="slides">
36
- end_line_num = 346 # Closing <div>
37
- default_slides = begin_line_num..end_line_num
38
- FileSlicer.remove! file, default_slides
39
- end
40
- end
41
-
42
- def add_user_content(file, user_slides)
43
- add_task "Splicing in slides from #{user_slides}" do
44
- FileSplicer.insert!(user_slides,
45
- into: file,
46
- after: '<div class="slides">')
47
- end
48
- end
49
-
50
- def replace_title(file, title)
51
- old_title = 'reveal.js - The HTML Presentation Framework'
52
- new_title = title
53
- add_task 'Replacing the <title>' do
54
- FileStringReplacer.replace!(file,
55
- old: old_title,
56
- new: new_title)
57
- end
58
- end
59
-
60
- def replace_author(file, author)
61
- old_author = 'name="author" content="Hakim El Hattab"'
62
- new_author = 'name="author" content="' + author + '"'
63
- add_task "Replacing the <meta name='author'>" do
64
- FileStringReplacer.replace!(file,
65
- old: old_author,
66
- new: new_author)
67
- end
68
- end
69
-
70
- def replace_theme(file, theme)
71
- old_theme = 'href="css/theme/default.css" id="theme"'
72
- new_theme = 'href="css/theme/' + theme + '.css" id="theme"'
73
- add_task 'Replacing the core theme' do
74
- FileStringReplacer.replace!(file,
75
- old: old_theme,
76
- new: new_theme)
77
- end
78
- end
79
-
80
- end
81
- end
@@ -1,39 +0,0 @@
1
- module RevealCK
2
- #
3
- # Public: A SlidesHtmlBuilder knows how to create the intermediate
4
- # file slides.html. This file is a users generate slide content, and
5
- # is ultimately inserted within reveal.js.
6
- #
7
- # A slides.html can be created from a template or from an instance
8
- # of a Presentation.
9
- #
10
- class SlidesHtmlBuilder
11
-
12
- def initialize(args)
13
- @input_file = args[:input_file]
14
- @presentation = args[:presentation]
15
- missing_info = 'either :input_file or :presentation are required'
16
- raise missing_info unless @input_file || @presentation
17
- end
18
-
19
- def render
20
- if @input_file
21
- if @input_file.end_with? '.rb'
22
- presentation = RevealCK::PresentationDSL.load @input_file
23
- presentation.content
24
- else
25
- template = TemplateProcessor.open @input_file
26
- template.output({}, {})
27
- end
28
- else
29
- @presentation.content
30
- end
31
- end
32
-
33
- def write_to(args)
34
- file = args[:file] || raise(':file is required')
35
- File.open(file, 'w') { |file| file << render }
36
- end
37
-
38
- end
39
- end
@@ -1,33 +0,0 @@
1
- module RevealCK
2
- #
3
- # Public: This class is home to a simple algorithm for looking up
4
- # files in a series of directories. Directory order matters, and the
5
- # first match for the file will be returned. It'll raise if it can't
6
- # find the file you've asked for.
7
- #
8
- class TemplateFinder
9
-
10
- attr_reader :paths
11
-
12
- def initialize(args = {})
13
- @paths = args[:paths] || default_paths
14
- end
15
-
16
- def default_paths
17
- pwd = Dir.pwd
18
- pwd_templates = pwd, 'templates'
19
- reveal_ck_templates = File.join RevealCK::LOCATION, 'templates'
20
- [pwd, pwd_templates, reveal_ck_templates]
21
- end
22
-
23
- def find(template_name)
24
- paths.each do |path|
25
- glob_pattern = "#{File.join(path, template_name)}*"
26
- matching_templates = Dir.glob glob_pattern
27
- return matching_templates[0] unless matching_templates.empty?
28
- end
29
- raise "Unable to find #{template_name} in #{paths}"
30
- end
31
-
32
- end
33
- end
@@ -1,28 +0,0 @@
1
- #
2
- # Setup Slim
3
- require 'slim'
4
- ::Slim::Engine.set_default_options pretty: true
5
-
6
- module RevealCK
7
- #
8
- # Public: A TemplateProcessor is given a template and expected to
9
- # render it.
10
- #
11
- class TemplateProcessor
12
-
13
- require 'tilt'
14
-
15
- def initialize(file)
16
- @template = Tilt.new file
17
- end
18
-
19
- def output(scope = nil, locals = {})
20
- @template.render scope, locals
21
- end
22
-
23
- def self.open(file)
24
- TemplateProcessor.new file
25
- end
26
-
27
- end
28
- end
@@ -1,6 +0,0 @@
1
- title = "The Never Sea Slides"
2
- author = "Captain Hook"
3
-
4
- [presentation]
5
-
6
- theme = "night"
@@ -1,10 +0,0 @@
1
- <section>
2
- <p>
3
- This is basic HAML
4
- </p>
5
- </section>
6
- <section>
7
- <p>
8
- Right?
9
- </p>
10
- </section>
@@ -1,10 +0,0 @@
1
- <section>
2
- <p>
3
- This is basic Slim
4
- </p>
5
- </section>
6
- <section>
7
- <p>
8
- Right?
9
- </p>
10
- </section>
@@ -1,375 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
-
4
- <head>
5
- <meta charset="utf-8">
6
-
7
- <title>reveal.js - The HTML Presentation Framework</title>
8
-
9
- <meta name="description" content="A framework for easily creating beautiful presentations using HTML">
10
- <meta name="author" content="Hakim El Hattab">
11
-
12
- <meta name="apple-mobile-web-app-capable" content="yes" />
13
- <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
14
-
15
- <link rel="stylesheet" href="css/reveal.min.css">
16
- <link rel="stylesheet" href="css/theme/default.css" id="theme">
17
-
18
- <!-- For syntax highlighting -->
19
- <link rel="stylesheet" href="lib/css/zenburn.css">
20
-
21
- <!-- If the query includes 'print-pdf', use the PDF print sheet -->
22
- <script>
23
- document.write( '<link rel="stylesheet" href="css/print/' + ( window.location.search.match( /print-pdf/gi ) ? 'pdf' : 'paper' ) + '.css" type="text/css" media="print">' );
24
- </script>
25
-
26
- <!--[if lt IE 9]>
27
- <script src="lib/js/html5shiv.js"></script>
28
- <![endif]-->
29
- </head>
30
-
31
- <body>
32
-
33
- <div class="reveal">
34
-
35
- <!-- Any section element inside of this container is displayed as a slide -->
36
- <div class="slides">
37
-
38
- <section>
39
- <h1>Reveal.js</h1>
40
- <h3>HTML Presentations Made Easy</h3>
41
- <p>
42
- <small>Created by <a href="http://hakim.se">Hakim El Hattab</a> / <a href="http://twitter.com/hakimel">@hakimel</a></small>
43
- </p>
44
- </section>
45
-
46
- <section>
47
- <h2>Heads Up</h2>
48
- <p>
49
- reveal.js is a framework for easily creating beautiful presentations using HTML. You'll need a browser with
50
- support for CSS 3D transforms to see it in its full glory.
51
- </p>
52
-
53
- <aside class="notes">
54
- Oh hey, these are some notes. They'll be hidden in your presentation, but you can see them if you open the speaker notes window (hit 's' on your keyboard).
55
- </aside>
56
- </section>
57
-
58
- <!-- Example of nested vertical slides -->
59
- <section>
60
- <section>
61
- <h2>Vertical Slides</h2>
62
- <p>
63
- Slides can be nested inside of other slides,
64
- try pressing <a href="#" class="navigate-down">down</a>.
65
- </p>
66
- <a href="#" class="image navigate-down">
67
- <img width="178" height="238" src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Down arrow">
68
- </a>
69
- </section>
70
- <section>
71
- <h2>Basement Level 1</h2>
72
- <p>Press down or up to navigate.</p>
73
- </section>
74
- <section>
75
- <h2>Basement Level 2</h2>
76
- <p>Cornify</p>
77
- <a class="test" href="http://cornify.com">
78
- <img width="280" height="326" src="https://s3.amazonaws.com/hakim-static/reveal-js/cornify.gif" alt="Unicorn">
79
- </a>
80
- </section>
81
- <section>
82
- <h2>Basement Level 3</h2>
83
- <p>That's it, time to go back up.</p>
84
- <a href="#/2" class="image">
85
- <img width="178" height="238" src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Up arrow" style="-webkit-transform: rotate(180deg);">
86
- </a>
87
- </section>
88
- </section>
89
-
90
- <section>
91
- <h2>Point of View</h2>
92
- <p>
93
- Press <strong>ESC</strong> to enter the slide overview. Hold down alt and click on any element to zoom in on it using <a href="http://lab.hakim.se/zoom-js">zoom.js</a>. Alt + click anywhere to zoom back out.
94
- </p>
95
- </section>
96
-
97
- <section>
98
- <h2>rvl.io</h2>
99
- <p>
100
- If you don't like writing slides in HTML you can use the online editor <a href="http://www.rvl.io" target="_blank">rvl.io</a>.
101
- </p>
102
- </section>
103
-
104
- <section>
105
- <h2>Works in Mobile Safari</h2>
106
- <p>
107
- Try it out! You can swipe through the slides and pinch your way to the overview.
108
- </p>
109
- </section>
110
-
111
- <section>
112
- <h2>Marvelous Unordered List</h2>
113
- <ul>
114
- <li>No order here</li>
115
- <li>Or here</li>
116
- <li>Or here</li>
117
- <li>Or here</li>
118
- </ul>
119
- </section>
120
-
121
- <section>
122
- <h2>Fantastic Ordered List</h2>
123
- <ol>
124
- <li>One is smaller than...</li>
125
- <li>Two is smaller than...</li>
126
- <li>Three!</li>
127
- </ol>
128
- </section>
129
-
130
- <section data-markdown>
131
- <script type="text/template">
132
- ## Markdown support
133
-
134
- For those of you who like that sort of thing. Instructions and a bit more info available [here](https://github.com/hakimel/reveal.js#markdown).
135
-
136
- <section data-markdown>
137
- ## Markdown support
138
-
139
- For those of you who like that sort of thing.
140
- Instructions and a bit more info available [here](https://github.com/hakimel/reveal.js#markdown).
141
- </section>
142
- </script>
143
- </section>
144
-
145
- <section id="transitions">
146
- <h2>Transition Styles</h2>
147
- <p>
148
- You can select from different transitions, like: <br>
149
- <a href="?transition=cube#/transitions">Cube</a> -
150
- <a href="?transition=page#/transitions">Page</a> -
151
- <a href="?transition=concave#/transitions">Concave</a> -
152
- <a href="?transition=zoom#/transitions">Zoom</a> -
153
- <a href="?transition=linear#/transitions">Linear</a> -
154
- <a href="?transition=fade#/transitions">Fade</a> -
155
- <a href="?transition=none#/transitions">None</a> -
156
- <a href="?#/transitions">Default</a>
157
- </p>
158
- </section>
159
-
160
- <section id="themes">
161
- <h2>Themes</h2>
162
- <p>
163
- Reveal.js comes with a few themes built in: <br>
164
- <a href="?theme=sky#/themes">Sky</a> -
165
- <a href="?theme=beige#/themes">Beige</a> -
166
- <a href="?theme=simple#/themes">Simple</a> -
167
- <a href="?theme=serif#/themes">Serif</a> -
168
- <a href="?theme=night#/themes">Night</a> -
169
- <a href="?#/themes">Default</a>
170
- </p>
171
- <p>
172
- <small>
173
- * Theme demos are loaded after the presentation which leads to flicker. In production you should load your theme in the <code>&lt;head&gt;</code> using a <code>&lt;link&gt;</code>.
174
- </small>
175
- </p>
176
- </section>
177
-
178
- <section>
179
- <section data-state="alert">
180
- <h2>Global State</h2>
181
- <p>
182
- Set <code>data-state="something"</code> on a slide and <code>"something"</code>
183
- will be added as a class to the document element when the slide is open. This lets you
184
- apply broader style changes, like switching the background.
185
- </p>
186
- <a href="#" class="image navigate-down">
187
- <img width="178" height="238" src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Down arrow">
188
- </a>
189
- </section>
190
- <section data-state="blackout">
191
- <h2>"blackout"</h2>
192
- <a href="#" class="image navigate-down">
193
- <img width="178" height="238" src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Down arrow">
194
- </a>
195
- </section>
196
- <section data-state="soothe">
197
- <h2>"soothe"</h2>
198
- <a href="#" class="image navigate-next">
199
- <img width="178" height="238" src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Up arrow" style="-webkit-transform: rotate(-90deg);">
200
- </a>
201
- </section>
202
- </section>
203
-
204
- <section data-state="customevent">
205
- <h2>Custom Events</h2>
206
- <p>
207
- Additionally custom events can be triggered on a per slide basis by binding to the <code>data-state</code> name.
208
- </p>
209
- <pre><code contenteditable style="font-size: 18px; margin-top: 20px;">Reveal.addEventListener( 'customevent', function() {
210
- console.log( '"customevent" has fired' );
211
- } );
212
- </code></pre>
213
- </section>
214
-
215
- <section>
216
- <h2>Clever Quotes</h2>
217
- <p>
218
- These guys come in two forms, inline: <q cite="http://searchservervirtualization.techtarget.com/definition/Our-Favorite-Technology-Quotations">
219
- The nice thing about standards is that there are so many to choose from</q> and block:
220
- </p>
221
- <blockquote cite="http://searchservervirtualization.techtarget.com/definition/Our-Favorite-Technology-Quotations">
222
- For years there has been a theory that millions of monkeys typing at random on millions of typewriters would
223
- reproduce the entire works of Shakespeare. The Internet has proven this theory to be untrue.
224
- </blockquote>
225
- </section>
226
-
227
- <section>
228
- <h2>Pretty Code</h2>
229
- <pre><code contenteditable>
230
- function linkify( selector ) {
231
- if( supports3DTransforms ) {
232
-
233
- var nodes = document.querySelectorAll( selector );
234
-
235
- for( var i = 0, len = nodes.length; i &lt; len; i++ ) {
236
- var node = nodes[i];
237
-
238
- if( !node.className ) ) {
239
- node.className += ' roll';
240
- }
241
- };
242
- }
243
- }
244
- </code></pre>
245
- <p>Courtesy of <a href="http://softwaremaniacs.org/soft/highlight/en/description/">highlight.js</a>.</p>
246
- </section>
247
-
248
- <section>
249
- <h2>Intergalactic Interconnections</h2>
250
- <p>
251
- You can link between slides internally,
252
- <a href="#/2/3">like this</a>.
253
- </p>
254
- </section>
255
-
256
- <section>
257
- <section>
258
- <h2>Fragmented Views</h2>
259
- <p>Hit the next arrow...</p>
260
- <p class="fragment">... to step through ...</p>
261
- <ol>
262
- <li class="fragment"><code>any type</code></li>
263
- <li class="fragment"><em>of view</em></li>
264
- <li class="fragment"><strong>fragments</strong></li>
265
- </ol>
266
-
267
- <aside class="notes">
268
- This slide has fragments which are also stepped through in the notes window.
269
- </aside>
270
- </section>
271
- <section>
272
- <h2>Fragment Styles</h2>
273
- <p>There's a few styles of fragments, like:</p>
274
- <p class="fragment grow">grow</p>
275
- <p class="fragment shrink">shrink</p>
276
- <p class="fragment roll-in">roll-in</p>
277
- <p class="fragment fade-out">fade-out</p>
278
- <p class="fragment highlight-red">highlight-red</p>
279
- <p class="fragment highlight-green">highlight-green</p>
280
- <p class="fragment highlight-blue">highlight-blue</p>
281
- </section>
282
- </section>
283
-
284
- <section>
285
- <h2>Spectacular image!</h2>
286
- <a class="image" href="http://lab.hakim.se/meny/" target="_blank">
287
- <img width="320" height="299" src="http://s3.amazonaws.com/hakim-static/portfolio/images/meny.png" alt="Meny">
288
- </a>
289
- </section>
290
-
291
- <section>
292
- <h2>Export to PDF</h2>
293
- <p>Presentations can be <a href="https://github.com/hakimel/reveal.js#pdf-export">exported to PDF</a>, below is an example that's been uploaded to SlideShare.</p>
294
- <iframe id="slideshare" src="http://www.slideshare.net/slideshow/embed_code/13872948" width="455" height="356" style="margin:0;overflow:hidden;border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen> </iframe>
295
- <script>
296
- document.getElementById('slideshare').attributeName = 'allowfullscreen';
297
- </script>
298
- </section>
299
-
300
- <section>
301
- <h2>Take a Moment</h2>
302
- <p>
303
- Press b or period on your keyboard to enter the 'paused' mode. This mode is helpful when you want to take distracting slides off the screen
304
- during a presentation.
305
- </p>
306
- </section>
307
-
308
- <section>
309
- <h2>Stellar Links</h2>
310
- <ul>
311
- <li><a href="https://github.com/hakimel/reveal.js">Source code on GitHub</a></li>
312
- <li><a href="http://hakim.se/projects/reveal-js">Leave feedback on my site</a></li>
313
- <li><a href="http://twitter.com/hakimel">Follow me on Twitter</a></li>
314
- </ul>
315
- </section>
316
-
317
- <section>
318
- <h2>It's free</h2>
319
- <p>
320
- reveal.js and <a href="http://www.rvl.io">rvl.io</a> are entirely free but if you'd like to support the projects you can donate below.
321
- Donations will go towards hosting and domain costs.
322
- </p>
323
- <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
324
- <input type="hidden" name="cmd" value="_donations">
325
- <input type="hidden" name="business" value="hakim.elhattab@gmail.com">
326
- <input type="hidden" name="lc" value="US">
327
- <input type="hidden" name="item_name" value="reveal.js / rvl.io">
328
- <input type="hidden" name="no_note" value="0">
329
- <input type="hidden" name="currency_code" value="USD">
330
- <input type="hidden" name="bn" value="PP-DonationsBF:btn_donate_LG.gif:NonHostedGuest">
331
- <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
332
- </form>
333
- </section>
334
-
335
- <section>
336
- <h1>THE END</h1>
337
- <h3>BY Hakim El Hattab / hakim.se</h3>
338
- </section>
339
-
340
- </div>
341
-
342
- </div>
343
-
344
- <script src="lib/js/head.min.js"></script>
345
- <script src="js/reveal.min.js"></script>
346
-
347
- <script>
348
-
349
- // Full list of configuration options available here:
350
- // https://github.com/hakimel/reveal.js#configuration
351
- Reveal.initialize({
352
- controls: true,
353
- progress: true,
354
- history: true,
355
- center: true,
356
-
357
- theme: Reveal.getQueryHash().theme, // available themes are in /css/theme
358
- transition: Reveal.getQueryHash().transition || 'default', // default/cube/page/concave/zoom/linear/fade/none
359
-
360
- // Optional libraries used to extend on reveal.js
361
- dependencies: [
362
- { src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
363
- { src: 'plugin/markdown/showdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
364
- { src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
365
- { src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
366
- { src: 'plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
367
- { src: 'plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } }
368
- // { src: 'plugin/remotes/remotes.js', async: true, condition: function() { return !!document.body.classList; } }
369
- ]
370
- });
371
-
372
- </script>
373
-
374
- </body>
375
- </html>