slideshow 0.5.2 → 0.6

Sign up to get free protection for your applications and to get access to all the features.
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