slideshow 0.5.2 → 0.6
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.
- data/lib/slideshow.rb +274 -127
- data/lib/templates/header.html.erb +1 -1
- data/lib/templates/s5/header.html.erb +1 -1
- data/lib/templates/s6/header.html.erb +1 -0
- data/lib/templates/s6/outline.css +1 -1
- data/lib/templates/s6/slides.js +1 -1
- metadata +4 -8
data/lib/slideshow.rb
CHANGED
@@ -11,25 +11,170 @@ require 'uv'
|
|
11
11
|
|
12
12
|
module Slideshow
|
13
13
|
|
14
|
-
|
14
|
+
VERSION = '0.6'
|
15
|
+
|
16
|
+
class Params
|
15
17
|
|
16
18
|
def initialize( name, headers )
|
17
|
-
|
18
|
-
|
19
|
-
|
19
|
+
@svgname = "#{name}.svg"
|
20
|
+
@cssname = "#{name}.css"
|
21
|
+
@headers = headers
|
20
22
|
end
|
21
23
|
|
22
24
|
def params_binding
|
23
|
-
|
25
|
+
binding
|
24
26
|
end
|
25
27
|
|
26
28
|
end
|
27
29
|
|
28
|
-
|
30
|
+
# todo: split (command line) options and headers?
|
31
|
+
# e.g. share (command line) options between slide shows (but not headers?)
|
32
|
+
|
33
|
+
class Opts
|
34
|
+
|
35
|
+
def initialize
|
36
|
+
@hash = {}
|
37
|
+
end
|
38
|
+
|
39
|
+
def put( key, value )
|
40
|
+
key = key.downcase
|
41
|
+
if key.eql? 'code-theme' then
|
42
|
+
code_theme = value
|
43
|
+
elsif key.eql? 'gradient' then
|
44
|
+
gradient = value
|
45
|
+
elsif key.eql? 'gradient-colors' then
|
46
|
+
gradient_colors = value
|
47
|
+
elsif key.eql? 'gradient-color' then
|
48
|
+
gradient_color = value
|
49
|
+
elsif key.eql? 'gradient-theme' then
|
50
|
+
gradient-theme = value
|
51
|
+
else
|
52
|
+
@hash[ key ] = value
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def code_theme=( value )
|
57
|
+
@hash[ 'code-theme' ] = value.tr( '-', '_' )
|
58
|
+
end
|
59
|
+
|
60
|
+
def gradient=( value )
|
61
|
+
values = value.split( ' ' )
|
62
|
+
@hash[ 'gradient-theme' ] = values[0].tr( '-', '_' )
|
63
|
+
@hash[ 'gradient-color1' ] = values[1] if values[1]
|
64
|
+
@hash[ 'gradient-color2' ] = values[2] if values[2]
|
65
|
+
end
|
66
|
+
|
67
|
+
def gradient_colors=( value )
|
68
|
+
values = value.split( ' ' )
|
69
|
+
@hash[ 'gradient-color1' ] = values[0]
|
70
|
+
@hash[ 'gradient-color2' ] = values[1] if values[1]
|
71
|
+
end
|
72
|
+
|
73
|
+
def gradient_color=( value )
|
74
|
+
@hash[ 'gradient-color1' ] = value
|
75
|
+
end
|
76
|
+
|
77
|
+
def gradient_theme=( value )
|
78
|
+
@hash[ 'gradient-theme' ] = value.tr( '-', '_' )
|
79
|
+
end
|
80
|
+
|
81
|
+
def get( key, default )
|
82
|
+
value = @hash[ key ]
|
83
|
+
value.nil? ? default : value
|
84
|
+
end
|
85
|
+
|
86
|
+
def []( key )
|
87
|
+
value = @hash[ key ]
|
88
|
+
value.nil? ? "- #{key} not found -" : value
|
89
|
+
end
|
90
|
+
|
91
|
+
def get_boolean( key, default )
|
92
|
+
value = @hash[ key ]
|
93
|
+
if value.nil?
|
94
|
+
default
|
95
|
+
else
|
96
|
+
if( value == true || value.downcase == 'true' || value.downcase == 'yes' || value.downcase == 'on' )
|
97
|
+
true
|
98
|
+
else
|
99
|
+
false
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def generate?
|
105
|
+
get_boolean( 'generate', false )
|
106
|
+
end
|
107
|
+
|
108
|
+
def has_includes?
|
109
|
+
@hash[ 'include' ]
|
110
|
+
end
|
111
|
+
|
112
|
+
def includes
|
113
|
+
# fix: use os-agnostic delimiter (use : for Mac/Unix?)
|
114
|
+
has_includes? ? @hash['include'].split( ';' ) : []
|
115
|
+
end
|
116
|
+
|
117
|
+
def s5?
|
118
|
+
get_boolean( 's5', false )
|
119
|
+
end
|
120
|
+
|
121
|
+
def fullerscreen?
|
122
|
+
get_boolean( 'fuller', false ) || get_boolean( 'fullerscreen', false )
|
123
|
+
end
|
124
|
+
|
125
|
+
def code_theme
|
126
|
+
get( 'code-theme', 'amy' )
|
127
|
+
end
|
128
|
+
|
129
|
+
def code_line_numbers?
|
130
|
+
get_boolean( 'code-line-numbers', true )
|
131
|
+
end
|
132
|
+
|
133
|
+
DEFAULTS =
|
134
|
+
[
|
135
|
+
[ 'title', 'Untitled Slide Show' ],
|
136
|
+
[ 'gradient-theme', 'dark' ],
|
137
|
+
[ 'gradient-color1', 'red' ],
|
138
|
+
[ 'gradient-color2', 'black' ],
|
139
|
+
[ 'code-theme', 'amy' ],
|
140
|
+
[ 'code-line-numbers', 'true' ]
|
141
|
+
]
|
142
|
+
|
143
|
+
def set_defaults
|
144
|
+
DEFAULTS.each do | item |
|
145
|
+
key = item[0]
|
146
|
+
value = item[1]
|
147
|
+
@hash[ key ] = value if @hash[ key ].nil?
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
end # class Opts
|
152
|
+
|
153
|
+
|
154
|
+
class Gen
|
155
|
+
|
156
|
+
KNOWN_TEXTILE_EXTNAMES = [ '.textile', '.t' ]
|
157
|
+
KNOWN_MARKDOWN_EXTNAMES = [ '.markdown', '.mark', '.m', '.txt', '.text' ]
|
158
|
+
|
159
|
+
def initialize
|
160
|
+
@logger = Logger.new(STDOUT)
|
161
|
+
@logger.level = Logger::INFO
|
162
|
+
@opts = Opts.new
|
163
|
+
end
|
164
|
+
|
165
|
+
def logger
|
166
|
+
@logger
|
167
|
+
end
|
168
|
+
|
169
|
+
def opts
|
170
|
+
@opts
|
171
|
+
end
|
172
|
+
|
173
|
+
def cache_dir
|
29
174
|
PLATFORM =~ /win32/ ? win32_cache_dir : File.join(File.expand_path("~"), ".slideshow")
|
30
|
-
end
|
175
|
+
end
|
31
176
|
|
32
|
-
def
|
177
|
+
def win32_cache_dir
|
33
178
|
unless File.exists?(home = ENV['HOMEDRIVE'] + ENV['HOMEPATH'])
|
34
179
|
puts "No HOMEDRIVE or HOMEPATH environment variable. Set one to save a" +
|
35
180
|
"local cache of stylesheets for syntax highlighting and more."
|
@@ -37,46 +182,90 @@ def Slideshow.win32_cache_dir
|
|
37
182
|
else
|
38
183
|
return File.join(home, 'slideshow')
|
39
184
|
end
|
40
|
-
end
|
185
|
+
end
|
186
|
+
|
187
|
+
def load_template( name, builtin )
|
188
|
+
|
189
|
+
if opts.has_includes?
|
190
|
+
opts.includes.each do |path|
|
191
|
+
logger.debug "File.exists? #{path}/#{name}"
|
192
|
+
if File.exists?( "#{path}/#{name}" ) then
|
193
|
+
|
194
|
+
puts "Loading custom template #{path}/#{name}..."
|
195
|
+
return File.read( "#{path}/#{name}" )
|
196
|
+
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
200
|
+
# fallback load builtin template packaged with gem
|
201
|
+
load_builtin_template( builtin )
|
202
|
+
end
|
41
203
|
|
42
|
-
def
|
204
|
+
def load_builtin_template( name )
|
205
|
+
templatesdir = "#{File.dirname(__FILE__)}/templates"
|
206
|
+
logger.debug "templatesdir=#{templatesdir}"
|
43
207
|
|
44
|
-
|
45
|
-
|
208
|
+
File.read( "#{templatesdir}/#{name}" )
|
209
|
+
end
|
46
210
|
|
47
|
-
|
48
|
-
|
211
|
+
def render_template( content, b=TOPLEVEL_BINDING )
|
212
|
+
ERB.new( content ).result( b )
|
213
|
+
end
|
49
214
|
|
50
|
-
def Slideshow.render_template( content, b=TOPLEVEL_BINDING )
|
51
|
-
ERB.new( content ).result( b )
|
52
|
-
end
|
53
215
|
|
216
|
+
def create_slideshow_templates
|
217
|
+
|
218
|
+
if opts.s5?
|
219
|
+
files = [[ 's5/header.html.erb', 'header.html.erb' ],
|
220
|
+
[ 's5/footer.html.erb', 'footer.html.erb' ],
|
221
|
+
[ 's5/style.css.erb', 'style.css.erb' ]]
|
222
|
+
elsif opts.fullerscreen? # use fullerscreen templates
|
223
|
+
files = [[ 'header.html.erb', 'header.html.erb' ],
|
224
|
+
[ 'footer.html.erb', 'footer.html.erb' ],
|
225
|
+
[ 'style.css.erb', 'style.css.erb' ]]
|
226
|
+
else # use default s6 templates
|
227
|
+
files = [[ 's6/header.html.erb', 'header.html.erb' ],
|
228
|
+
[ 's6/footer.html.erb', 'footer.html.erb' ],
|
229
|
+
[ 's6/style.css.erb', 'style.css.erb' ]]
|
230
|
+
end
|
231
|
+
|
232
|
+
# background theming shared between s5/s6/fullerscreen
|
233
|
+
files << [ 'gradient.svg.erb', 'gradient.svg.erb' ]
|
234
|
+
|
235
|
+
files.each do |file|
|
236
|
+
source = "#{File.dirname(__FILE__)}/templates/#{file[0]}"
|
237
|
+
dest = "#{file[1]}"
|
238
|
+
|
239
|
+
puts "Copying '#{source}' to '#{dest}'"
|
240
|
+
File.copy( source, dest )
|
241
|
+
end
|
242
|
+
|
243
|
+
puts "Done."
|
244
|
+
end
|
54
245
|
|
55
|
-
def
|
246
|
+
def create_slideshow( fn )
|
56
247
|
|
57
|
-
if
|
58
|
-
headerdoc = load_template( 's5/header.html.erb' )
|
59
|
-
footerdoc = load_template( 's5/footer.html.erb' )
|
60
|
-
styledoc = load_template( 's5/style.css.erb' )
|
61
|
-
elsif
|
62
|
-
headerdoc = load_template( 'header.html.erb' )
|
63
|
-
footerdoc = load_template( 'footer.html.erb' )
|
64
|
-
styledoc = load_template( 'style.css.erb' )
|
248
|
+
if opts.s5?
|
249
|
+
headerdoc = load_template( 'header.html.erb', 's5/header.html.erb' )
|
250
|
+
footerdoc = load_template( 'footer.html.erb', 's5/footer.html.erb' )
|
251
|
+
styledoc = load_template( 'style.css.erb', 's5/style.css.erb' )
|
252
|
+
elsif opts.fullerscreen? # use fullerscreen templates
|
253
|
+
headerdoc = load_template( 'header.html.erb', 'header.html.erb' )
|
254
|
+
footerdoc = load_template( 'footer.html.erb', 'footer.html.erb' )
|
255
|
+
styledoc = load_template( 'style.css.erb', 'style.css.erb' )
|
65
256
|
else # use default s6 templates
|
66
|
-
headerdoc = load_template( 's6/header.html.erb' )
|
67
|
-
footerdoc = load_template( 's6/footer.html.erb' )
|
68
|
-
styledoc = load_template( 's6/style.css.erb' )
|
257
|
+
headerdoc = load_template( 'header.html.erb', 's6/header.html.erb' )
|
258
|
+
footerdoc = load_template( 'footer.html.erb', 's6/footer.html.erb' )
|
259
|
+
styledoc = load_template( 'style.css.erb', 's6/style.css.erb' )
|
69
260
|
end
|
70
261
|
|
71
262
|
# background theming shared between s5/s6/fullerscreen
|
72
|
-
gradientdoc = load_template( 'gradient.svg.erb' )
|
263
|
+
gradientdoc = load_template( 'gradient.svg.erb', 'gradient.svg.erb' )
|
73
264
|
|
74
265
|
basename = File.basename( fn, '.*' )
|
75
266
|
extname = File.extname( fn )
|
76
267
|
|
77
|
-
|
78
|
-
known_markdown_extnames = [ '.markdown', '.mark', '.m', '.txt', '.text' ]
|
79
|
-
known_extnames = known_textile_extnames + known_markdown_extnames
|
268
|
+
known_extnames = KNOWN_TEXTILE_EXTNAMES + KNOWN_MARKDOWN_EXTNAMES
|
80
269
|
|
81
270
|
if extname.eql?("") then
|
82
271
|
extname = ".textile" # default to .textile
|
@@ -112,11 +301,11 @@ def Slideshow.create_slideshow( fn )
|
|
112
301
|
value = $2.strip
|
113
302
|
|
114
303
|
logger.debug " adding option: key=>#{key}< value=>#{value}<"
|
115
|
-
|
304
|
+
opts.put( key, value )
|
116
305
|
elsif line =~ /^\s*$/
|
117
306
|
content << line unless read_headers
|
118
307
|
else
|
119
|
-
read_headers =false
|
308
|
+
read_headers = false
|
120
309
|
content << line
|
121
310
|
end
|
122
311
|
end
|
@@ -132,8 +321,9 @@ def Slideshow.create_slideshow( fn )
|
|
132
321
|
content.gsub!( "_S9BEGIN_", "{{{" )
|
133
322
|
content.gsub!( "_S9END_", "}}}" )
|
134
323
|
|
135
|
-
|
136
|
-
|
324
|
+
opts.set_defaults
|
325
|
+
|
326
|
+
params = Params.new( basename, opts )
|
137
327
|
|
138
328
|
puts "Preparing slideshow theme '#{svgname}'..."
|
139
329
|
|
@@ -146,11 +336,15 @@ def Slideshow.create_slideshow( fn )
|
|
146
336
|
|
147
337
|
# convert light-weight markup to hypertext
|
148
338
|
|
149
|
-
if
|
339
|
+
if KNOWN_MARKDOWN_EXTNAMES.include?( extname )
|
150
340
|
content = Maruku.new( content, {:on_error => :raise} ).to_html
|
151
341
|
# old code: content = BlueCloth.new( content ).to_html
|
152
342
|
else
|
153
|
-
|
343
|
+
# turn off hard line breaks
|
344
|
+
# turn off span caps (see http://rubybook.ca/2008/08/16/redcloth)
|
345
|
+
red = RedCloth.new( content, [:no_span_caps] )
|
346
|
+
red.hard_breaks = false
|
347
|
+
content = red.to_html
|
154
348
|
end
|
155
349
|
|
156
350
|
|
@@ -194,10 +388,7 @@ def Slideshow.create_slideshow( fn )
|
|
194
388
|
# todo: missing any other entities? use CGI::unescapeHTML?
|
195
389
|
logger.debug "code=>#{code}<"
|
196
390
|
|
197
|
-
|
198
|
-
code_line_numbers = get_boolean_option( 'code-line-numbers', true )
|
199
|
-
code_theme = get_option( 'code-theme', 'amy' )
|
200
|
-
code_highlighted = Uv.parse( code, "xhtml", lang, code_line_numbers, code_theme )
|
391
|
+
code_highlighted = Uv.parse( code, "xhtml", lang, opts.code_line_numbers?, opts.code_theme )
|
201
392
|
# old code: e.inner_html = code_highlighted
|
202
393
|
# todo: is it ok to replace the pre.code enclosing element to avoid duplicates?
|
203
394
|
e.swap( code_highlighted )
|
@@ -228,7 +419,7 @@ def Slideshow.create_slideshow( fn )
|
|
228
419
|
FileUtils.mkdir(cache_dir) unless File.exists?(cache_dir) if cache_dir
|
229
420
|
Uv.copy_files "xhtml", cache_dir
|
230
421
|
|
231
|
-
theme =
|
422
|
+
theme = opts.code_theme
|
232
423
|
|
233
424
|
theme_content = File.read( "#{cache_dir}/css/#{theme}.css" )
|
234
425
|
|
@@ -241,7 +432,7 @@ def Slideshow.create_slideshow( fn )
|
|
241
432
|
out.close
|
242
433
|
|
243
434
|
|
244
|
-
if
|
435
|
+
if opts.s5?
|
245
436
|
# copy s5 machinery to s5 folder
|
246
437
|
# todo/fix: is there a better way to check if the dir exists?
|
247
438
|
Dir.mkdir( 's5' ) unless File.directory?( 's5' )
|
@@ -254,7 +445,7 @@ def Slideshow.create_slideshow( fn )
|
|
254
445
|
logger.debug "copying '#{source} ' to '#{dest}'"
|
255
446
|
File.copy( source, dest )
|
256
447
|
end
|
257
|
-
elsif
|
448
|
+
elsif opts.fullerscreen?
|
258
449
|
# do nothing; slideshow machinery built into plugin (requires install!)
|
259
450
|
else
|
260
451
|
# copy s6 machinery to s6 folder
|
@@ -273,102 +464,48 @@ def Slideshow.create_slideshow( fn )
|
|
273
464
|
puts "Done."
|
274
465
|
end
|
275
466
|
|
276
|
-
def Slideshow.logger
|
277
|
-
if @@logger.nil?
|
278
|
-
@@logger = Logger.new(STDOUT)
|
279
|
-
end
|
280
|
-
@@logger
|
281
|
-
end
|
282
|
-
|
283
|
-
|
284
|
-
def Slideshow.set_default_options()
|
285
|
-
defaults =
|
286
|
-
[
|
287
|
-
[ 'title', 'Untitled Slide Show' ],
|
288
|
-
[ 'gradient-theme', 'dark' ],
|
289
|
-
[ 'gradient-color1', 'red' ],
|
290
|
-
[ 'gradient-color2', 'black' ],
|
291
|
-
[ 'code-theme', 'amy' ],
|
292
|
-
[ 'code-line-numbers', 'true' ]
|
293
|
-
]
|
294
|
-
|
295
|
-
defaults.each do | item |
|
296
|
-
key = item[0]
|
297
|
-
value = item[1]
|
298
|
-
$options[ key ] = value if $options[ key ].nil?
|
299
|
-
end
|
300
|
-
end
|
301
|
-
|
302
|
-
def Slideshow.store_option( key, value )
|
303
|
-
key = key.downcase
|
304
|
-
if key.eql? 'code-theme' then
|
305
|
-
$options[ 'code-theme' ] = value.tr( '-', '_' )
|
306
|
-
elsif key.eql? 'gradient' then
|
307
|
-
values = value.split( ' ' )
|
308
|
-
$options[ 'gradient-theme' ] = values[0].tr( '-', '_' )
|
309
|
-
$options[ 'gradient-color1' ] = values[1] if values[1]
|
310
|
-
$options[ 'gradient-color2' ] = values[2] if values[2]
|
311
|
-
elsif key.eql? 'gradient-colors' then
|
312
|
-
values = value.split( ' ' )
|
313
|
-
$options[ 'gradient-color1' ] = values[0]
|
314
|
-
$options[ 'gradient-color2' ] = values[1] if values[1]
|
315
|
-
elsif key.eql? 'gradient-color' then
|
316
|
-
$options[ 'gradient-color1' ] = value
|
317
|
-
elsif key.eql? 'gradient-theme' then
|
318
|
-
$options[ 'gradient-theme' ] = value.tr( '-', '_' )
|
319
|
-
else
|
320
|
-
$options[ key ] = value
|
321
|
-
end
|
322
|
-
end
|
323
|
-
|
324
|
-
def Slideshow.get_option( key, default )
|
325
|
-
value = $options[ key ]
|
326
|
-
value.nil? ? default : value
|
327
|
-
end
|
328
|
-
|
329
|
-
def Slideshow.get_boolean_option( key, default )
|
330
|
-
value = $options[ key ]
|
331
|
-
if value.nil?
|
332
|
-
default
|
333
|
-
else
|
334
|
-
if( value == true || value.downcase == 'true' || value.downcase == 'yes' || value.downcase == 'on' )
|
335
|
-
true
|
336
|
-
else
|
337
|
-
false
|
338
|
-
end
|
339
|
-
end
|
340
|
-
end
|
341
|
-
|
342
|
-
def Slideshow.main
|
343
|
-
|
344
|
-
@@logger = nil
|
345
|
-
$options = {}
|
346
467
|
|
347
|
-
|
468
|
+
def run( args )
|
348
469
|
|
349
|
-
opt=OptionParser.new do |
|
350
|
-
|
470
|
+
opt=OptionParser.new do |cmd|
|
471
|
+
|
472
|
+
cmd.banner = "Usage: slideshow [options] name"
|
351
473
|
|
352
474
|
#todo/fix: use -s5 option without optional hack? possible with OptionParser package/lib?
|
353
475
|
# use -5 switch instead?
|
354
|
-
|
355
|
-
|
476
|
+
cmd.on( '-s[OPTIONAL]', '--s5', 'S5 Compatible Slide Show' ) { opts.put( 's5', true ) }
|
477
|
+
cmd.on( '-f[OPTIONAL]', '--fullerscreen', 'FullerScreen Compatible Slide Show' ) { opts.put( 'fuller', true ) }
|
356
478
|
# opts.on( "-s", "--style STYLE", "Select Stylesheet" ) { |s| $options[:style]=s }
|
357
479
|
# opts.on( "-v", "--version", "Show version" ) {}
|
358
|
-
|
480
|
+
|
481
|
+
cmd.on( '-g', '--generate', 'Generate Slide Show Templates' ) { opts.put( 'generate', true ) }
|
482
|
+
# use -d or -o to select output directory for slideshow or slideshow templates?
|
483
|
+
# cmd.on( '-d', '--directory DIRECTORY', 'Output Directory' ) { |s| opts.put( 'directory', s ) }
|
484
|
+
cmd.on( '-i', '--include PATH', 'Load Path' ) { |s| opts.put( 'include', s ) }
|
485
|
+
|
486
|
+
cmd.on( "-t", "--trace", "Show debug trace" ) {
|
359
487
|
logger.datetime_format = "%H:%H:%S"
|
360
488
|
logger.level = Logger::DEBUG
|
361
489
|
}
|
362
|
-
|
490
|
+
cmd.on_tail( "-h", "--help", "Show this message" ) {
|
363
491
|
puts
|
364
492
|
puts "Slide Show (S9) is a free web alternative to PowerPoint or KeyNote in Ruby"
|
365
493
|
puts
|
366
|
-
puts
|
494
|
+
puts cmd.help
|
367
495
|
puts
|
368
496
|
puts "Examples:"
|
369
497
|
puts " slideshow microformats"
|
370
498
|
puts " slideshow microformats.textile"
|
371
499
|
puts " slideshow -s5 microformats # S5 compatible"
|
500
|
+
puts " slideshow -f microformats # FullerScreen compatible"
|
501
|
+
puts
|
502
|
+
puts "More examles:"
|
503
|
+
puts " slideshow -g # Generate slide show templates"
|
504
|
+
puts " slideshow -g -s5 # Generate S5 compatible slide show templates"
|
505
|
+
puts " slideshow -g -f # Generate FullerScreen compatible slide show templates"
|
506
|
+
puts
|
507
|
+
puts " slideshow -i . microformats # Use slide show templates in path ."
|
508
|
+
puts " slideshow -i . -s5 microformats # Use S5 compatible slide show templates in path ."
|
372
509
|
puts
|
373
510
|
puts "Further information:"
|
374
511
|
puts " http://slideshow.rubyforge.org"
|
@@ -376,13 +513,23 @@ def Slideshow.main
|
|
376
513
|
}
|
377
514
|
end
|
378
515
|
|
379
|
-
opt.parse!
|
516
|
+
opt.parse!( args )
|
380
517
|
|
381
|
-
puts "Slide Show (S9) Version:
|
518
|
+
puts "Slide Show (S9) Version: #{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
|
382
519
|
|
383
|
-
|
520
|
+
if opts.generate?
|
521
|
+
create_slideshow_templates
|
522
|
+
else
|
523
|
+
args.each { |fn| create_slideshow( fn ) }
|
524
|
+
end
|
384
525
|
end
|
385
526
|
|
527
|
+
end # class Gen
|
528
|
+
|
529
|
+
def Slideshow.main
|
530
|
+
Gen.new.run(ARGV)
|
386
531
|
end
|
387
532
|
|
533
|
+
end # module Slideshow
|
534
|
+
|
388
535
|
Slideshow.main if __FILE__ == $0
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/* don't change this unless you want the layout stuff to show up in the outline view! */
|
2
2
|
|
3
|
-
.layout *, #footer *, #navLinks * { display: none; }
|
3
|
+
.layout > *, #controls *, #footer *, #navLinks * { display: none; }
|
4
4
|
|
5
5
|
#controls, #navLinks, #toggle {
|
6
6
|
display: block; visibility: visible; margin: 0; padding: 0;}
|
data/lib/templates/s6/slides.js
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slideshow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: "0.6"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gerald Bauer
|
@@ -9,12 +9,11 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-08-26 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: RedCloth
|
17
|
-
type: :runtime
|
18
17
|
version_requirement:
|
19
18
|
version_requirements: !ruby/object:Gem::Requirement
|
20
19
|
requirements:
|
@@ -24,7 +23,6 @@ dependencies:
|
|
24
23
|
version:
|
25
24
|
- !ruby/object:Gem::Dependency
|
26
25
|
name: maruku
|
27
|
-
type: :runtime
|
28
26
|
version_requirement:
|
29
27
|
version_requirements: !ruby/object:Gem::Requirement
|
30
28
|
requirements:
|
@@ -34,7 +32,6 @@ dependencies:
|
|
34
32
|
version:
|
35
33
|
- !ruby/object:Gem::Dependency
|
36
34
|
name: hpricot
|
37
|
-
type: :runtime
|
38
35
|
version_requirement:
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
40
37
|
requirements:
|
@@ -44,7 +41,6 @@ dependencies:
|
|
44
41
|
version:
|
45
42
|
- !ruby/object:Gem::Dependency
|
46
43
|
name: ultraviolet
|
47
|
-
type: :runtime
|
48
44
|
version_requirement:
|
49
45
|
version_requirements: !ruby/object:Gem::Requirement
|
50
46
|
requirements:
|
@@ -53,7 +49,7 @@ dependencies:
|
|
53
49
|
version: 0.10.2
|
54
50
|
version:
|
55
51
|
description:
|
56
|
-
email:
|
52
|
+
email: webslideshow@googlegroups.com
|
57
53
|
executables:
|
58
54
|
- slideshow
|
59
55
|
extensions: []
|
@@ -108,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
108
104
|
requirements: []
|
109
105
|
|
110
106
|
rubyforge_project: slideshow
|
111
|
-
rubygems_version: 1.
|
107
|
+
rubygems_version: 1.1.1
|
112
108
|
signing_key:
|
113
109
|
specification_version: 2
|
114
110
|
summary: Slide Show (S9) - A Free Web Alternative to PowerPoint and KeyNote in Ruby
|