parade 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +21 -0
- data/README.md +542 -0
- data/Rakefile +15 -0
- data/bin/parade +138 -0
- data/lib/parade.rb +43 -0
- data/lib/parade/commands/commands.rb +84 -0
- data/lib/parade/commands/generate_outline.rb +34 -0
- data/lib/parade/commands/generate_presentation.rb +34 -0
- data/lib/parade/commands/generate_rackup.rb +32 -0
- data/lib/parade/commands/html_output.rb +47 -0
- data/lib/parade/commands/render_from_template.rb +50 -0
- data/lib/parade/commands/static_html.rb +38 -0
- data/lib/parade/commands/static_pdf.rb +39 -0
- data/lib/parade/commands/unknown.rb +23 -0
- data/lib/parade/features/live_ruby.rb +18 -0
- data/lib/parade/features/pdf_presentation.rb +24 -0
- data/lib/parade/features/preshow.rb +11 -0
- data/lib/parade/helpers/encode_image.rb +24 -0
- data/lib/parade/helpers/template_generator.rb +130 -0
- data/lib/parade/metadata.rb +73 -0
- data/lib/parade/metadata/assignment.rb +38 -0
- data/lib/parade/metadata/css_classes.rb +22 -0
- data/lib/parade/metadata/html_id.rb +35 -0
- data/lib/parade/metadata/template.rb +31 -0
- data/lib/parade/parsers/dsl.rb +138 -0
- data/lib/parade/parsers/dsl_file_parser.rb +17 -0
- data/lib/parade/parsers/json_file_parser.rb +67 -0
- data/lib/parade/parsers/markdown_image_paths.rb +44 -0
- data/lib/parade/parsers/markdown_slide_splitter.rb +63 -0
- data/lib/parade/parsers/presentation_directory_parser.rb +36 -0
- data/lib/parade/parsers/presentation_file_parser.rb +27 -0
- data/lib/parade/parsers/presentation_filepath_parser.rb +35 -0
- data/lib/parade/parsers/slides_file_content_parser.rb +27 -0
- data/lib/parade/renderers/columns_renderer.rb +68 -0
- data/lib/parade/renderers/command_line_renderer.rb +142 -0
- data/lib/parade/renderers/html_with_pygments.rb +42 -0
- data/lib/parade/renderers/inline_images.rb +31 -0
- data/lib/parade/renderers/special_paragraph_renderer.rb +23 -0
- data/lib/parade/renderers/update_image_paths.rb +75 -0
- data/lib/parade/section.rb +183 -0
- data/lib/parade/server.rb +139 -0
- data/lib/parade/slide.rb +128 -0
- data/lib/parade/version.rb +3 -0
- data/lib/public/css/960.css +653 -0
- data/lib/public/css/fg.menu.css +114 -0
- data/lib/public/css/ghf_marked.css +180 -0
- data/lib/public/css/jquery-terminal.css +73 -0
- data/lib/public/css/onepage.css +62 -0
- data/lib/public/css/parade.css +450 -0
- data/lib/public/css/pdf.css +13 -0
- data/lib/public/css/reset.css +53 -0
- data/lib/public/css/spinner_bar.gif +0 -0
- data/lib/public/css/theme/images/ui-bg_diagonals-small_100_f0efea_40x40.png +0 -0
- data/lib/public/css/theme/images/ui-bg_flat_35_f0f0f0_40x100.png +0 -0
- data/lib/public/css/theme/images/ui-bg_glass_55_fcf0ba_1x400.png +0 -0
- data/lib/public/css/theme/images/ui-bg_glow-ball_25_2e2e28_600x600.png +0 -0
- data/lib/public/css/theme/images/ui-bg_highlight-soft_100_f0efea_1x100.png +0 -0
- data/lib/public/css/theme/images/ui-bg_highlight-soft_25_327E04_1x100.png +0 -0
- data/lib/public/css/theme/images/ui-bg_highlight-soft_25_5A9D1A_1x100.png +0 -0
- data/lib/public/css/theme/images/ui-bg_highlight-soft_95_ffedad_1x100.png +0 -0
- data/lib/public/css/theme/images/ui-bg_inset-soft_22_3b3b35_1x100.png +0 -0
- data/lib/public/css/theme/images/ui-icons_808080_256x240.png +0 -0
- data/lib/public/css/theme/images/ui-icons_8DC262_256x240.png +0 -0
- data/lib/public/css/theme/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/lib/public/css/theme/images/ui-icons_e7e6e4_256x240.png +0 -0
- data/lib/public/css/theme/images/ui-icons_eeeeee_256x240.png +0 -0
- data/lib/public/css/theme/images/ui-icons_ffffff_256x240.png +0 -0
- data/lib/public/css/theme/ui.accordion.css +9 -0
- data/lib/public/css/theme/ui.all.css +2 -0
- data/lib/public/css/theme/ui.base.css +9 -0
- data/lib/public/css/theme/ui.core.css +37 -0
- data/lib/public/css/theme/ui.datepicker.css +62 -0
- data/lib/public/css/theme/ui.dialog.css +13 -0
- data/lib/public/css/theme/ui.progressbar.css +4 -0
- data/lib/public/css/theme/ui.resizable.css +13 -0
- data/lib/public/css/theme/ui.slider.css +17 -0
- data/lib/public/css/theme/ui.tabs.css +9 -0
- data/lib/public/css/theme/ui.theme.css +245 -0
- data/lib/public/favicon.ico +0 -0
- data/lib/public/js/coffee-script.js +8 -0
- data/lib/public/js/fg.menu.js +645 -0
- data/lib/public/js/jTypeWriter.js +26 -0
- data/lib/public/js/jquery-1.4.2.js +6240 -0
- data/lib/public/js/jquery-print.js +109 -0
- data/lib/public/js/jquery-pubsub.js +27 -0
- data/lib/public/js/jquery-terminal.js +2712 -0
- data/lib/public/js/jquery.batchImageLoad.js +56 -0
- data/lib/public/js/jquery.cycle.all.js +1284 -0
- data/lib/public/js/keyboard.js +733 -0
- data/lib/public/js/parade-code-execution.js +122 -0
- data/lib/public/js/parade-command-input.js +16 -0
- data/lib/public/js/parade-command-visor.js +92 -0
- data/lib/public/js/parade-keyboard-input.js +54 -0
- data/lib/public/js/parade.js +675 -0
- data/lib/public/js/spine.js +904 -0
- data/lib/templates/config.ru.erb +4 -0
- data/lib/templates/showoff.erb +27 -0
- data/lib/templates/slides.md.erb +25 -0
- data/lib/views/header.erb +73 -0
- data/lib/views/index.erb +53 -0
- data/lib/views/inline_css.erb +3 -0
- data/lib/views/inline_js.erb +3 -0
- data/lib/views/onepage.erb +17 -0
- data/lib/views/pdf.erb +17 -0
- data/lib/views/slide.erb +5 -0
- metadata +317 -0
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
Copyright (c) 2009 Scott Chacon
|
2
|
+
Copyright (c) 2012 Franklin Webber
|
3
|
+
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
5
|
+
a copy of this software and associated documentation files (the
|
6
|
+
"Software"), to deal in the Software without restriction, including
|
7
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
8
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
+
permit persons to whom the Software is furnished to do so, subject to
|
10
|
+
the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be
|
13
|
+
included in all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,542 @@
|
|
1
|
+
# Parade Presentation Software
|
2
|
+
|
3
|
+
Parade is a Sinatra web app that reads serves up markdown files in a
|
4
|
+
presentation format. Parade can serve a directory or be configured to run with
|
5
|
+
a simple configuration file.
|
6
|
+
|
7
|
+
## Comparison Vs PowerPoint / Keynote
|
8
|
+
|
9
|
+
Parade is easily out-done by professional presentation software packages as
|
10
|
+
far as out-of-the-box style and design. However, there are benefits that
|
11
|
+
Parade has over presentational software:
|
12
|
+
|
13
|
+
### The Good
|
14
|
+
|
15
|
+
* Markdown backed data
|
16
|
+
|
17
|
+
> This ultimately makes it easier to manage diffs when making changes,
|
18
|
+
using the content in other documents, and quickly re-using portions of a
|
19
|
+
presentation.
|
20
|
+
|
21
|
+
* Syntax Highlighting
|
22
|
+
|
23
|
+
> Using GitHub flavored markdown, code fences will automatically be
|
24
|
+
syntax highlighted making it incredibly easy to integrate code samples
|
25
|
+
|
26
|
+
* Code Execution
|
27
|
+
|
28
|
+
> Slides are able to provide execution and show results for javascript,
|
29
|
+
Coffeescript, and Ruby live within the browser. Allowing for live
|
30
|
+
demonstrations of code.
|
31
|
+
|
32
|
+
* Web
|
33
|
+
|
34
|
+
> The system is simply a website which allows for a lot of possibilities
|
35
|
+
|
36
|
+
### The Ugly
|
37
|
+
|
38
|
+
* Lack of style
|
39
|
+
|
40
|
+
> Most presentation packages are going to provide for you better templates
|
41
|
+
|
42
|
+
* Speed of Layout and Animation
|
43
|
+
|
44
|
+
> Unless you're skills are great with CSS/Animations, you are likely going
|
45
|
+
to have a harder time creating presentations with as much polish.
|
46
|
+
|
47
|
+
* Resizing
|
48
|
+
|
49
|
+
> Currently the presentation system can change gradual sizes, but is not
|
50
|
+
very capable of growing well to the full resolution of current presentation
|
51
|
+
resolution.
|
52
|
+
|
53
|
+
# Installation and Usage
|
54
|
+
|
55
|
+
```bash
|
56
|
+
$ gem install parade
|
57
|
+
```
|
58
|
+
|
59
|
+
## Starting the Slide Show
|
60
|
+
|
61
|
+
```bash
|
62
|
+
$ parade
|
63
|
+
```
|
64
|
+
|
65
|
+
By default running parade with start a presentation from the current working
|
66
|
+
directory. It will find all markdown files, `**/*.md`, within the directory
|
67
|
+
and create a presentation out of them.
|
68
|
+
|
69
|
+
> By default parade will split slides along lines that start with a single `#`
|
70
|
+
|
71
|
+
|
72
|
+
## Slide Show Commands
|
73
|
+
|
74
|
+
You can manage the presentation with the following keys:
|
75
|
+
|
76
|
+
> ### *space* or *cursor right*
|
77
|
+
>
|
78
|
+
> Advance to the next slide or advance the next incremental bullet point
|
79
|
+
or show the end result of the code execution.
|
80
|
+
>
|
81
|
+
> ### *shift-space* or *cursor left*
|
82
|
+
>
|
83
|
+
> Move to the previous slide
|
84
|
+
>
|
85
|
+
> ### *z* or *?*
|
86
|
+
>
|
87
|
+
> Toggle help
|
88
|
+
>
|
89
|
+
> ### *f*
|
90
|
+
>
|
91
|
+
> Toggle footer (which shows slide count of total slides, percentage)
|
92
|
+
>
|
93
|
+
> ### *d*
|
94
|
+
>
|
95
|
+
> Toggle DEBUG information
|
96
|
+
>
|
97
|
+
> ### *c* or *t*
|
98
|
+
>
|
99
|
+
> Toggle the display of the Table of Contents
|
100
|
+
>
|
101
|
+
> ### *p*
|
102
|
+
>
|
103
|
+
> Toggle pre-show
|
104
|
+
|
105
|
+
|
106
|
+
### Serving a specific directory
|
107
|
+
|
108
|
+
```bash
|
109
|
+
$ parade [directory]
|
110
|
+
```
|
111
|
+
|
112
|
+
This will start a presentation from the specified directory. Again, finding all
|
113
|
+
markdown files contained within the directories or sub-directories.
|
114
|
+
|
115
|
+
### Serving specific files
|
116
|
+
|
117
|
+
To include certain files, specify an order, duplicate slides, you will need to
|
118
|
+
define a `parade` file. Within that file, you may define specific files,
|
119
|
+
specific folders, and the order of the presentation.
|
120
|
+
|
121
|
+
```ruby
|
122
|
+
title "My Presentation"
|
123
|
+
slides "intro.md"
|
124
|
+
section "directory_name"
|
125
|
+
```
|
126
|
+
|
127
|
+
> **slides** and **section** are exactly the same, however you may choose to
|
128
|
+
use one over the other depending of you are mentioning a specific file of
|
129
|
+
slides or a directory which could contain another `parade` or be considered
|
130
|
+
a section.
|
131
|
+
|
132
|
+
You can so define sub sections with a title and slides or additional sections.
|
133
|
+
|
134
|
+
```ruby
|
135
|
+
|
136
|
+
title "My Presentation"
|
137
|
+
|
138
|
+
section "Introduction" do
|
139
|
+
slides "intro.md"
|
140
|
+
end
|
141
|
+
|
142
|
+
section "Code Samples" do
|
143
|
+
slides "ruby"
|
144
|
+
slides "javascript"
|
145
|
+
section "coffeescript"
|
146
|
+
end
|
147
|
+
```
|
148
|
+
|
149
|
+
# Slide Format
|
150
|
+
|
151
|
+
## Slide Separators
|
152
|
+
|
153
|
+
### Separator: **#**
|
154
|
+
|
155
|
+
Slides are simply markdown format. As stated previously, slides will be
|
156
|
+
separated along the `#`elements within your document.
|
157
|
+
|
158
|
+
### Separator: !SLIDE
|
159
|
+
|
160
|
+
Relying on the `#` as a separator is not always ideal. So you may alternatively
|
161
|
+
use the `!SLIDE` separator. This also provides you with the ability to define
|
162
|
+
additional metadata with your slides and presentation.
|
163
|
+
|
164
|
+
```markdown
|
165
|
+
!SLIDE
|
166
|
+
|
167
|
+
# My Presentation
|
168
|
+
|
169
|
+
!SLIDE bullets incremental transition=fade
|
170
|
+
|
171
|
+
# Bullet Points
|
172
|
+
|
173
|
+
* first point
|
174
|
+
* second point
|
175
|
+
* third point
|
176
|
+
```
|
177
|
+
|
178
|
+
> Using this separator will immediately override `#`, so you will have to
|
179
|
+
insert `!SLIDE` separators in all places you would like cut your slides.
|
180
|
+
|
181
|
+
## Notes
|
182
|
+
|
183
|
+
You can define special notes that are shown in presenter mode.
|
184
|
+
|
185
|
+
> Presenter mode has been removed until it can be rebuilt
|
186
|
+
|
187
|
+
Add a line that starts with .notes:
|
188
|
+
|
189
|
+
```markdown
|
190
|
+
## Important Slide
|
191
|
+
|
192
|
+
* First Thing
|
193
|
+
* Second Things
|
194
|
+
|
195
|
+
.notes The reason that the second thing came about is because things changed.
|
196
|
+
```
|
197
|
+
|
198
|
+
> In this example, the HTML output will contain a `<p class='notes'>`
|
199
|
+
Toggle presenter notes with the `n` key while in the presentation.
|
200
|
+
|
201
|
+
> Presenter mode has been removed until it can be rebuilt
|
202
|
+
|
203
|
+
### Metadata
|
204
|
+
|
205
|
+
#### HTML IDs
|
206
|
+
|
207
|
+
```markdown
|
208
|
+
!SLIDE #slide-id-1
|
209
|
+
```
|
210
|
+
|
211
|
+
> In this example the id of the slide div would be set to `#slide-id-1`
|
212
|
+
|
213
|
+
You can define an ID that will be added to the slide's `div`. This id will be
|
214
|
+
set to any value prefaced with the `#` character.
|
215
|
+
|
216
|
+
#### Transitions
|
217
|
+
|
218
|
+
```markdown
|
219
|
+
!SLIDE transition=fade
|
220
|
+
```
|
221
|
+
|
222
|
+
> In this example, the slide will __fade__ when it is viewed. This will set
|
223
|
+
`data-transition='fade'` on the slides's `div`.
|
224
|
+
|
225
|
+
You can define transitions from the available body of transitions.
|
226
|
+
|
227
|
+
The transitions are provided by jQuery Cycle plugin. See http://www.malsup.com/jquery/cycle/browser.html to view the effects and http://www.malsup.com/jquery/cycle/adv2.html for how to add custom effects.
|
228
|
+
|
229
|
+
##### Available Transitions
|
230
|
+
|
231
|
+
* none (this is the default)
|
232
|
+
* blindX, blindY, blindZ
|
233
|
+
* cover
|
234
|
+
* curtainX, curtainY
|
235
|
+
* fade
|
236
|
+
* fadeZoom
|
237
|
+
* growX, growY
|
238
|
+
* scrollUp, scrollDown, scrollLeft, scrollRight
|
239
|
+
* scrollHorz, scrollVert
|
240
|
+
* shuffle
|
241
|
+
* slideX, slideY
|
242
|
+
* toss
|
243
|
+
* turnUp, turnDown, turnLeft, turnRight
|
244
|
+
* uncover
|
245
|
+
* wipe
|
246
|
+
* zoom
|
247
|
+
|
248
|
+
#### CSS Classes
|
249
|
+
|
250
|
+
```markdown
|
251
|
+
!SLIDE bullets incremental my-custom-css-class
|
252
|
+
```
|
253
|
+
> In this example, this will add custom css classes to the slide's `div` will
|
254
|
+
display the following classes:
|
255
|
+
`class='content bullets incremental my-custom-css-class'`. _Note:_ the content
|
256
|
+
class is added by the default slide template.
|
257
|
+
|
258
|
+
All remaining single terms are added as css classes to the slide's `div`.
|
259
|
+
|
260
|
+
##### Defined Classes
|
261
|
+
|
262
|
+
Parade defines a number of special CSS classes:
|
263
|
+
|
264
|
+
> ### center
|
265
|
+
> centers images on a slide
|
266
|
+
>
|
267
|
+
> ### full-page
|
268
|
+
> allows an image to take up the whole slide
|
269
|
+
>
|
270
|
+
> ### bullets
|
271
|
+
> sizes and separates bullets properly (fits up to 5, generally)
|
272
|
+
>
|
273
|
+
> ### columns
|
274
|
+
>
|
275
|
+
> creates columns for every `##` markdown element in your slides (up to 4)
|
276
|
+
>
|
277
|
+
> ### smbullets
|
278
|
+
> sizes and separates more bullets (smaller, closer together)
|
279
|
+
>
|
280
|
+
> ### subsection
|
281
|
+
> creates a different background for titles
|
282
|
+
>
|
283
|
+
> ### command
|
284
|
+
> monospaces h1 title slides
|
285
|
+
>
|
286
|
+
> ### commandline
|
287
|
+
> for pasted commandline sections (needs leading '$' for commands, then
|
288
|
+
> output on subsequent lines)
|
289
|
+
>
|
290
|
+
> ### code
|
291
|
+
> monospaces everything on the slide
|
292
|
+
>
|
293
|
+
> ### incremental
|
294
|
+
> can be used with 'bullets' and 'commandline' styles, will incrementally
|
295
|
+
> update elements on arrow key rather than switch slides
|
296
|
+
>
|
297
|
+
> ### small
|
298
|
+
> make all slide text 80%
|
299
|
+
>
|
300
|
+
> ### smaller
|
301
|
+
> make all slide text 70%
|
302
|
+
>
|
303
|
+
> ### execute
|
304
|
+
> on Javascript, Coffeescript and Ruby highlighted code slides, you can
|
305
|
+
> click on the code to execute it and display the results on the slide
|
306
|
+
|
307
|
+
|
308
|
+
# Presentation Customization
|
309
|
+
|
310
|
+
## Custom JavaScript
|
311
|
+
|
312
|
+
To insert custom JavaScript into your presentation you can either place it into
|
313
|
+
a file (with extension .js) into the root directory of your presentation or you
|
314
|
+
can embed a *script* element directly into your slides. This JavaScript will
|
315
|
+
be executed—as usually—as soon as it is loaded.
|
316
|
+
|
317
|
+
If you want to trigger some JavaScript as soon as a certain page is shown or
|
318
|
+
when you switch to the next or previous slide, you can bind a callback to a
|
319
|
+
custom event:
|
320
|
+
|
321
|
+
> ### parade:show
|
322
|
+
> will be triggered as soon as you enter a page
|
323
|
+
> ### parade:next
|
324
|
+
> will be triggered when you switch to the next page
|
325
|
+
> ### parade:incr
|
326
|
+
> will be triggered when you advance to the next increment on the page
|
327
|
+
> ### parade:prev
|
328
|
+
> will be triggered when you switch to the previous page
|
329
|
+
|
330
|
+
These events are triggered on the "div.content" child of the slide, so you must
|
331
|
+
add a custom and unique class to your SLIDE to identify it:
|
332
|
+
|
333
|
+
```markdown
|
334
|
+
!SLIDE custom_and_unique_class
|
335
|
+
# 1st Example h1
|
336
|
+
<script>
|
337
|
+
// bind to custom event
|
338
|
+
$(".custom_and_unique_class").bind("parade:show", function (event) {
|
339
|
+
// animate the h1
|
340
|
+
var h1 = $(event.target).find("h1");
|
341
|
+
h1.delay(500)
|
342
|
+
.slideUp(300, function () { $(this).css({textDecoration: "line-through"}); })
|
343
|
+
.slideDown(300);
|
344
|
+
});
|
345
|
+
</script>
|
346
|
+
```
|
347
|
+
|
348
|
+
This will bind an event handler for *parade:show* to your slide. The
|
349
|
+
h1-element will be animated, as soon as this event is triggered on that slide.
|
350
|
+
|
351
|
+
If you bind an event handler to the custom events *parade:next* or
|
352
|
+
*parade:prev*, you can prevent the default action (that is switching to the
|
353
|
+
appropriate slide) by calling *event.preventDefault()*:
|
354
|
+
|
355
|
+
```markdown
|
356
|
+
!SLIDE prevent_default
|
357
|
+
# 2nd Example h1
|
358
|
+
<script>
|
359
|
+
$(".prevent_default").bind("parade:next", function (event) {
|
360
|
+
var h1 = $(event.target).find("h1");
|
361
|
+
if (h1.css("text-decoration") === "none") {
|
362
|
+
event.preventDefault();
|
363
|
+
h1.css({textDecoration: "line-through"})
|
364
|
+
}
|
365
|
+
});
|
366
|
+
</script>
|
367
|
+
```
|
368
|
+
|
369
|
+
This will bind an event handler for *parade:next* to your slide. When you press
|
370
|
+
the right arrow key the first time, the h1-element will be decorated. When you
|
371
|
+
press the right array key another time, you will switch to the next slide.
|
372
|
+
|
373
|
+
The same applies to the *parade:prev* event, of course.
|
374
|
+
|
375
|
+
## Custom Stylesheets
|
376
|
+
|
377
|
+
To insert custom Stylesheets into your presentation you can either place it into
|
378
|
+
a file (with extension .css) into the root directory of your presentation or
|
379
|
+
you can embed a *link* element directly into your slides. This stylesheet will
|
380
|
+
be applied as soon as it is loaded.
|
381
|
+
|
382
|
+
The content generated by the slide is wrapped with a *div* with the class .+content+ like this.
|
383
|
+
|
384
|
+
```html
|
385
|
+
<div ref="intro/01_slide/1" class="content" style="margin-top: 210px;">
|
386
|
+
<h1>jQuery & Sinatra</h1>
|
387
|
+
<h2>A Classy Combination</h2>
|
388
|
+
</div>
|
389
|
+
```
|
390
|
+
|
391
|
+
This makes the .*content* tag a perfect place to add additional styling if that
|
392
|
+
is your preference. An example of adding some styling is here.
|
393
|
+
|
394
|
+
```css
|
395
|
+
.content {
|
396
|
+
color: black;
|
397
|
+
font-family: helvetica, arial;
|
398
|
+
}
|
399
|
+
h1, h2 {
|
400
|
+
color: rgb(79, 180, 226);
|
401
|
+
font-family: Georgia;
|
402
|
+
}
|
403
|
+
.content::after {
|
404
|
+
position: absolute;
|
405
|
+
right: 120px;
|
406
|
+
bottom: 120px;
|
407
|
+
content: url(jay_small.png);
|
408
|
+
}
|
409
|
+
```
|
410
|
+
|
411
|
+
Note that the example above uses CSS3 styling with ::*after* and the *content*
|
412
|
+
-attribute to add an image to the slides.
|
413
|
+
|
414
|
+
|
415
|
+
# Command Line Interface
|
416
|
+
|
417
|
+
```bash
|
418
|
+
parade command_name [command-specific options] [--] arguments...
|
419
|
+
```
|
420
|
+
|
421
|
+
* Use the command __help__ to get a summary of commands
|
422
|
+
* Use the command `help command_name` to get a help for _command_name_
|
423
|
+
* Use `--` to stop command line argument processing; useful if your arguments have dashes in them
|
424
|
+
|
425
|
+
## parade help [command]
|
426
|
+
|
427
|
+
Shows list of commands or help for one command
|
428
|
+
|
429
|
+
## parade generate presentation
|
430
|
+
|
431
|
+
Create new parade presentation
|
432
|
+
|
433
|
+
This command helps start a new parade presentation by setting up the proper directory structure for you. It takes the directory name you would like parade to create for you.
|
434
|
+
|
435
|
+
> ### Options
|
436
|
+
>
|
437
|
+
> dir:"directory_name" - the name of the directory you want to generate the
|
438
|
+
> presentation (defaults to *presentation*)
|
439
|
+
>
|
440
|
+
> title:"Presentation Title" - the title of the presentation
|
441
|
+
>
|
442
|
+
> description:"Presentation Description" - a description of the presentation
|
443
|
+
|
444
|
+
## parade generate outline
|
445
|
+
|
446
|
+
Create new parade outline file
|
447
|
+
|
448
|
+
Within the existing directory create a **parade** file that contains some
|
449
|
+
sample sections and slide references to get you started with creating
|
450
|
+
your customized presentation.
|
451
|
+
|
452
|
+
> ### Options
|
453
|
+
>
|
454
|
+
> title:"Presentation Title" - the title of the presentation
|
455
|
+
>
|
456
|
+
> description:"Presentation Description" - a description of the presentation
|
457
|
+
>
|
458
|
+
> outline:"custom outline filename" - if you want to specify a custom outline
|
459
|
+
> filename (i.e. override the default **parade** filename).
|
460
|
+
|
461
|
+
## parade generate rackup
|
462
|
+
|
463
|
+
Create new rackup file
|
464
|
+
|
465
|
+
Within the existing directory create a **config.ru** file that contains the
|
466
|
+
default code necessary to serve this code on Heroku and other destinations.
|
467
|
+
|
468
|
+
## parade server
|
469
|
+
|
470
|
+
Serves the parade presentation in the current directory
|
471
|
+
|
472
|
+
> ### Options
|
473
|
+
>
|
474
|
+
> These options are specified *after* the command.
|
475
|
+
>
|
476
|
+
> *-f, --file=arg* Presentation file (default: *parade*)
|
477
|
+
>
|
478
|
+
> *-h, --host=arg* Host or IP to serve on (default *localhost*)
|
479
|
+
>
|
480
|
+
> *-p, --port=arg* The port to serve one (default: *9090*)
|
481
|
+
>
|
482
|
+
> ### Aliases
|
483
|
+
>
|
484
|
+
> parade s
|
485
|
+
>
|
486
|
+
> parade serve
|
487
|
+
|
488
|
+
# Future Plans
|
489
|
+
|
490
|
+
I really want this to evolve into a dynamic presentation software server,
|
491
|
+
that gives the audience a lot of interaction into the presentation -
|
492
|
+
helping them decide dynamically what the content of the presentation is,
|
493
|
+
ask questions without interrupting the presenter, etc. I want the audience
|
494
|
+
to be able to download a dynamically generated PDF of either the actual
|
495
|
+
talk that was given, or all the available slides, plus supplementary
|
496
|
+
material. And I want the presenter (me) to be able to push each
|
497
|
+
presentation to Heroku or GitHub pages for archiving super easily.
|
498
|
+
|
499
|
+
|
500
|
+
## Presenter Tools
|
501
|
+
|
502
|
+
* simple highlighting (highlight region of slide / click to highlight)
|
503
|
+
* timer (time left, percent done, percent time done)
|
504
|
+
* editing slides
|
505
|
+
* preview
|
506
|
+
* let you write on the slide with your mouse, madden-style via canvas
|
507
|
+
|
508
|
+
## Presentation Layout
|
509
|
+
|
510
|
+
* theme support
|
511
|
+
* squeeze-to-fit style
|
512
|
+
* simple animations (image from A to B)
|
513
|
+
* show a timer - elapsed / remaining
|
514
|
+
* perform simple animations of images moving between keyframes
|
515
|
+
* automatically resize text to fit screen [see Alex's shrink.js]
|
516
|
+
|
517
|
+
## Output Formats
|
518
|
+
|
519
|
+
* pdf with notes
|
520
|
+
* webpage
|
521
|
+
* let audience members download slides, code samples or other supplementary
|
522
|
+
material
|
523
|
+
|
524
|
+
## Clean up
|
525
|
+
|
526
|
+
* More modularity with presentation filters and renderers to allow presenters
|
527
|
+
to create custom ones for the particular slide show
|
528
|
+
* Modular approach to features
|
529
|
+
* Clean up Javascript
|
530
|
+
|
531
|
+
## Interaction
|
532
|
+
|
533
|
+
* questions / comments system
|
534
|
+
* audience vote-based presentation builder, results live view
|
535
|
+
* show audience questions / comments (twitter or direct)
|
536
|
+
* let audience members go back / catch up as you talk
|
537
|
+
* let audience members vote on sections (?)
|
538
|
+
|
539
|
+
## Platforms
|
540
|
+
|
541
|
+
* show synchronized, hidden notes on another browser (like an iphone)
|
542
|
+
* broadcast itself on Bonjour
|