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 CHANGED
@@ -11,25 +11,170 @@ require 'uv'
11
11
 
12
12
  module Slideshow
13
13
 
14
- class Params
14
+ VERSION = '0.6'
15
+
16
+ class Params
15
17
 
16
18
  def initialize( name, headers )
17
- @svgname = "#{name}.svg"
18
- @cssname = "#{name}.css"
19
- @headers = headers
19
+ @svgname = "#{name}.svg"
20
+ @cssname = "#{name}.css"
21
+ @headers = headers
20
22
  end
21
23
 
22
24
  def params_binding
23
- binding
25
+ binding
24
26
  end
25
27
 
26
28
  end
27
29
 
28
- def Slideshow.cache_dir
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 Slideshow.win32_cache_dir
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 Slideshow.load_template( name )
204
+ def load_builtin_template( name )
205
+ templatesdir = "#{File.dirname(__FILE__)}/templates"
206
+ logger.debug "templatesdir=#{templatesdir}"
43
207
 
44
- templatesdir = "#{File.dirname(__FILE__)}/templates"
45
- logger.debug "templatesdir=#{templatesdir}"
208
+ File.read( "#{templatesdir}/#{name}" )
209
+ end
46
210
 
47
- File.read( "#{templatesdir}/#{name}" )
48
- end
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 Slideshow.create_slideshow( fn )
246
+ def create_slideshow( fn )
56
247
 
57
- if get_boolean_option( 's5', false )
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 get_boolean_option( 'fuller', false ) || get_boolean_option( 'fullerscreen', false ) # use fullerscreen templates
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
- known_textile_extnames = [ '.textile', '.t' ]
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
- store_option( key, value )
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
- set_default_options()
136
- params = Params.new( basename, $options )
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 known_markdown_extnames.include?( extname )
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
- content = RedCloth.new( content ).to_html
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
- # get options using headers
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 = get_option( 'code-theme', 'amy' )
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 get_boolean_option( 's5', false )
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 get_boolean_option( 'fuller', false ) || get_boolean_option( 'fullerscreen', false )
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
- logger.level = Logger::INFO
468
+ def run( args )
348
469
 
349
- opt=OptionParser.new do |opts|
350
- opts.banner = "Usage: slideshow [options] name"
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
- opts.on( '-s[OPTIONAL]', '--s5', 'S5 Compatible Slide Show' ) { $options[ 's5' ] = true; }
355
- opts.on( '-f[OPTIONAL]', '--fullerscreen', 'FullerScreen Compatible Slide Show' ) { $options[ 'fuller' ] = true; }
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
- opts.on( "-t", "--trace", "Show debug trace" ) {
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
- opts.on_tail( "-h", "--help", "Show this message" ) {
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 opts.help
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: 0.5.2 on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
518
+ puts "Slide Show (S9) Version: #{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
382
519
 
383
- ARGV.each { |fn| Slideshow.create_slideshow( fn ) }
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
@@ -14,7 +14,7 @@
14
14
 
15
15
  <div class="layout">
16
16
  <div class="background">
17
- <object data="<%= @svgname %>" width="100%" height="100%">
17
+ <object data="<%= @svgname %>" width="100%" height="100%"></object>
18
18
  </div>
19
19
  </div>
20
20
 
@@ -23,7 +23,7 @@
23
23
  <div class="layout">
24
24
 
25
25
  <div class="background">
26
- <object data="<%= @svgname %>" width="100%" height="100%">
26
+ <object data="<%= @svgname %>" width="100%" height="100%"></object>
27
27
  </div>
28
28
 
29
29
  <div id="controls"><!-- DO NOT EDIT --></div>
@@ -23,6 +23,7 @@
23
23
 
24
24
  <div class="background">
25
25
  <object data="<%= @svgname %>" width="100%" height="100%">
26
+ </object>
26
27
  </div>
27
28
 
28
29
  <div id="controls"><!-- DO NOT EDIT --></div>
@@ -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;}
@@ -178,7 +178,7 @@ $(document).ready(function(){
178
178
 
179
179
  if( $.browser.msie )
180
180
  {
181
- $( '.layout *').hide();
181
+ $( '.layout > *').hide();
182
182
  $( '.presentation').hide();
183
183
 
184
184
  $( '#microsoft' ).show();
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.5.2
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-07-22 00:00:00 -07:00
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: geraldbauer2007@gmail.com
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.2.0
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