slideshow 0.4 → 0.4.1

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
@@ -12,10 +12,10 @@ module Slideshow
12
12
 
13
13
  class Params
14
14
 
15
- def initialize( title, name )
16
- @title = title
15
+ def initialize( name, headers )
17
16
  @svgname = "#{name}.svg"
18
17
  @cssname = "#{name}.css"
18
+ @headers = headers
19
19
  end
20
20
 
21
21
  def params_binding
@@ -61,8 +61,6 @@ def Slideshow.create_slideshow( fn )
61
61
  basename = File.basename( fn, '.*' )
62
62
  extname = File.extname( fn )
63
63
 
64
- params = Params.new( "Slideshow", basename )
65
-
66
64
  known_textile_extnames = [ '.textile', '.t' ]
67
65
  known_markdown_extnames = [ '.markdown', '.mark', '.m', '.txt', '.text' ]
68
66
  known_extnames = known_textile_extnames + known_markdown_extnames
@@ -110,6 +108,15 @@ def Slideshow.create_slideshow( fn )
110
108
  end
111
109
  end
112
110
 
111
+ # run pre-filters (built-in macros)
112
+ # o replace {{{ w/ <pre class='code'>
113
+ # o replace }}} w/ </pre>
114
+ content.gsub!( "{{{", "<pre class='code'>" )
115
+ content.gsub!( "}}}", "</pre>" )
116
+
117
+ set_default_options()
118
+ params = Params.new( basename, $options )
119
+
113
120
  puts "Preparing slideshow theme '#{svgname}'..."
114
121
 
115
122
  out = File.new( svgname, "w+" )
@@ -134,9 +141,9 @@ def Slideshow.create_slideshow( fn )
134
141
  slide_counter = 0
135
142
  content2 = ''
136
143
 
137
- # wrap h1's in slide divs
144
+ # wrap h1's in slide divs; note use just <h1 since some processors add ids e.g. <h1 id='x'>
138
145
  content.each_line { |line|
139
- if line.include?( '<h1>' ) then
146
+ if line.include?( '<h1' ) then
140
147
  content2 << "\n\n</div>" if slide_counter > 0
141
148
  content2 << "<div class='slide'>\n\n"
142
149
  slide_counter += 1
@@ -152,9 +159,12 @@ def Slideshow.create_slideshow( fn )
152
159
  doc.search("pre.code, pre > code").each do |e|
153
160
  if e.inner_html =~ /^\s*#!(\w+)/
154
161
  lang = $1.downcase
155
- logger.debug " lang=#{lang}"
162
+ logger.debug " syntax highlighting using lang=#{lang}"
156
163
  if Uv.syntaxes.include?(lang)
157
- e.inner_html = Uv.parse( e.inner_html.sub(/^\s*#!\w+/, '').strip, "xhtml", lang, get_boolean_option( 'code-line-numbers', true ), get_option( 'code-theme', 'amy' ))
164
+ # e.inner_html = Uv.parse( e.inner_html.sub(/^\s*#!\w+/, '').strip, "xhtml", lang, get_boolean_option( 'code-line-numbers', true ), get_option( 'code-theme', 'amy' ))
165
+ # todo: is it ok to replace the pre.code enclosing element to avoid duplicates?
166
+ html = Uv.parse( e.inner_html.sub(/^\s*#!\w+/, '').strip, "xhtml", lang, get_boolean_option( 'code-line-numbers', true ), get_option( 'code-theme', 'amy' ))
167
+ e.swap( html )
158
168
  include_code_stylesheet = true
159
169
  end
160
170
  end
@@ -205,9 +215,44 @@ def Slideshow.logger
205
215
  end
206
216
 
207
217
 
218
+ def Slideshow.set_default_options()
219
+ defaults =
220
+ [
221
+ [ 'title', 'Untitled Slide Show' ],
222
+ [ 'gradient-theme', 'dark' ],
223
+ [ 'gradient-color1', 'red' ],
224
+ [ 'gradient-color2', 'black' ],
225
+ [ 'code-theme', 'amy' ],
226
+ [ 'code-line-numbers', 'true' ]
227
+ ]
228
+
229
+ defaults.each do | item |
230
+ key = item[0]
231
+ value = item[1]
232
+ $options[ key ] = value if $options[ key ].nil?
233
+ end
234
+ end
208
235
 
209
236
  def Slideshow.store_option( key, value )
210
- $options[ key ] = value
237
+ key = key.downcase
238
+ if key.eql? 'code-theme' then
239
+ $options[ 'code-theme' ] = value.tr( '-', '_' )
240
+ elsif key.eql? 'gradient' then
241
+ values = value.split( ' ' )
242
+ $options[ 'gradient-theme' ] = values[0].tr( '-', '_' )
243
+ $options[ 'gradient-color1' ] = values[1] if values[1]
244
+ $options[ 'gradient-color2' ] = values[2] if values[2]
245
+ elsif key.eql? 'gradient-colors' then
246
+ values = value.split( ' ' )
247
+ $options[ 'gradient-color1' ] = values[0]
248
+ $options[ 'gradient-color2' ] = values[1] if values[1]
249
+ elsif key.eql? 'gradient-color' then
250
+ $options[ 'gradient-color1' ] = value
251
+ elsif key.eql? 'gradient-theme' then
252
+ $options[ 'gradient-theme' ] = value.tr( '-', '_' )
253
+ else
254
+ $options[ key ] = value
255
+ end
211
256
  end
212
257
 
213
258
  def Slideshow.get_option( key, default )
@@ -261,7 +306,7 @@ def Slideshow.main
261
306
 
262
307
  opt.parse!
263
308
 
264
- puts "Slide Show (S9) Version: 0.4 on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
309
+ puts "Slide Show (S9) Version: 0.4.1 on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
265
310
 
266
311
  ARGV.each { |fn| Slideshow.create_slideshow( fn ) }
267
312
  end
@@ -2,58 +2,58 @@
2
2
 
3
3
  <defs>
4
4
  <linearGradient id="dark" x1="0" y1="0" x2="1" y2="1">
5
- <stop offset="0" style="stop-color: red"/>
6
- <stop offset="1" style="stop-color: black"/>
5
+ <stop offset="0" style="stop-color: <%= @headers['gradient-color1'] %>"/>
6
+ <stop offset="1" style="stop-color: <%= @headers['gradient-color2'] %>"/>
7
7
  </linearGradient>
8
8
 
9
9
  <linearGradient id="dark_reverse" x1="0" y1="0" x2="1" y2="1">
10
- <stop offset="0" style="stop-color: black"/>
11
- <stop offset="1" style="stop-color: red"/>
10
+ <stop offset="0" style="stop-color: <%= @headers['gradient-color2'] %>"/>
11
+ <stop offset="1" style="stop-color: <%= @headers['gradient-color1'] %>"/>
12
12
  </linearGradient>
13
13
 
14
14
  <linearGradient id="light" x1="0" y1="0" x2="1" y2="1">
15
- <stop offset="0" style="stop-color: red"/>
16
- <stop offset="1" style="stop-color: orange"/>
15
+ <stop offset="0" style="stop-color: <%= @headers['gradient-color1'] %>"/>
16
+ <stop offset="1" style="stop-color: <%= @headers['gradient-color2'] %>"/>
17
17
  </linearGradient>
18
18
 
19
19
  <linearGradient id="top_bottom" x1="0" y1="0" x2="0" y2="1">
20
- <stop offset="0%" style="stop-color: red" />
21
- <stop offset="100%" style="stop-color: black" />
20
+ <stop offset="0%" style="stop-color: <%= @headers['gradient-color1'] %>" />
21
+ <stop offset="100%" style="stop-color: <%= @headers['gradient-color2'] %>" />
22
22
  </linearGradient>
23
23
 
24
24
  <linearGradient id="left_right" x1="0" y1="0" x2="1" y2="0">
25
- <stop offset="0%" style="stop-color: red" />
26
- <stop offset="100%" style="stop-color: orange" />
25
+ <stop offset="0%" style="stop-color: <%= @headers['gradient-color1'] %>" />
26
+ <stop offset="100%" style="stop-color: <%= @headers['gradient-color2'] %>" />
27
27
  </linearGradient>
28
28
 
29
29
  <linearGradient id="repeat" x1="0.4" y1="0.4" x2="0.5" y2="0.5"
30
30
  spreadMethod="repeat">
31
- <stop offset="0%" style="stop-color: red" />
32
- <stop offset="50%" style="stop-color: orange" />
33
- <stop offset="100%" style="stop-color: red" />
31
+ <stop offset="0%" style="stop-color: <%= @headers['gradient-color1'] %>" />
32
+ <stop offset="50%" style="stop-color: <%= @headers['gradient-color2'] %>" />
33
+ <stop offset="100%" style="stop-color: <%= @headers['gradient-color1'] %>" />
34
34
  </linearGradient>
35
35
 
36
36
  <radialGradient id="radial">
37
- <stop offset="0%" style="stop-color: black" />
38
- <stop offset="100%" style="stop-color: red" />
37
+ <stop offset="0%" style="stop-color: <%= @headers['gradient-color2'] %>" />
38
+ <stop offset="100%" style="stop-color: <%= @headers['gradient-color1'] %>" />
39
39
  </radialGradient>
40
40
 
41
41
 
42
42
  <radialGradient id="radial_off_center" fx="0.7" fy="0.7" cx="0.5" cy="0.5" r="0.4">
43
- <stop offset="0%" style="stop-color: orange" />
44
- <stop offset="100%" style="stop-color: red" />
43
+ <stop offset="0%" style="stop-color: <%= @headers['gradient-color2'] %>" />
44
+ <stop offset="100%" style="stop-color: <%= @headers['gradient-color1'] %>" />
45
45
  </radialGradient>
46
46
 
47
47
  <radialGradient id="radial_repeat" fx="0.5" fy="0.5" cx="0.6" cy="0.6" r="0.2"
48
48
  spreadMethod="repeat">
49
- <stop offset="0%" style="stop-color: red" />
50
- <stop offset="50%" style="stop-color: orange" />
51
- <stop offset="100%" style="stop-color: red" />
49
+ <stop offset="0%" style="stop-color: <%= @headers['gradient-color1'] %>" />
50
+ <stop offset="50%" style="stop-color: <%= @headers['gradient-color2'] %>" />
51
+ <stop offset="100%" style="stop-color: <%= @headers['gradient-color1'] %>" />
52
52
  </radialGradient>
53
53
 
54
54
  </defs>
55
55
 
56
56
  <rect width="100%" height="100%"
57
- style="fill: url(#dark) "/>
57
+ style="fill: url(#<%= @headers['gradient-theme'] %>) "/>
58
58
 
59
59
  </svg>
@@ -5,7 +5,7 @@
5
5
  <meta name="titleselector" content="h1">
6
6
  <meta name="stepselector" content=".step">
7
7
 
8
- <title><%= @title %></title>
8
+ <title><%= @headers['title'] %></title>
9
9
 
10
10
  <link title="Style" href="<%= @cssname %>" type="text/css" rel="STYLESHEET">
11
11
 
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"
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-05-17 00:00:00 -07:00
12
+ date: 2008-05-18 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency