slideshow 0.8.2 → 0.8.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,7 @@
1
+ === 0.8.3 / 2010-06-23
2
+
3
+ * Added support for @slides and @content variables in templates
4
+
1
5
  === 0.8.2 / 2010-06-19
2
6
 
3
7
  * Add pdf templates to built-in S6 template package
@@ -23,7 +23,7 @@ require 'slideshow/gen'
23
23
 
24
24
  module Slideshow
25
25
 
26
- VERSION = '0.8.2'
26
+ VERSION = '0.8.3'
27
27
 
28
28
  def Slideshow.main
29
29
 
@@ -3,6 +3,9 @@
3
3
 
4
4
  module Slideshow
5
5
 
6
+ class Slide < Struct.new(:header, :content)
7
+ end
8
+
6
9
  class Gen
7
10
 
8
11
  KNOWN_TEXTILE_EXTNAMES = [ '.textile', '.t' ]
@@ -376,6 +379,7 @@ class Gen
376
379
  end
377
380
  end
378
381
 
382
+
379
383
  def create_slideshow( fn )
380
384
 
381
385
  manifest_path_or_name = opts.manifest
@@ -518,17 +522,53 @@ class Gen
518
522
  content2 = ''
519
523
 
520
524
  ## todo: move this to a filter (for easier reuse)
521
-
522
- # wrap h1's in slide divs; note use just <h1 since some processors add ids e.g. <h1 id='x'>
525
+
526
+ slides = []
527
+ slide_source = ""
528
+
529
+ # wrap h1's in slide divs; note: use just <h1 since some processors add ids e.g. <h1 id='x'>
523
530
  content.each_line do |line|
524
531
  if line.include?( '<h1' ) then
525
- content2 << "\n\n</div>" if slide_counter > 0
526
- content2 << "<div class='slide'>\n\n"
532
+ if slide_counter > 0 then # found start of new slide (and, thus, end of last slide)
533
+ content2 << "</div>\n"
534
+ slides << slide_source # add slide to slide stack
535
+ slide_source = "" # reset slide source buffer
536
+ end
537
+ content2 << "<div class='slide'>\n"
527
538
  slide_counter += 1
528
539
  end
529
- content2 << line
540
+ content2 << line
541
+ slide_source << line
542
+ end
543
+
544
+ if slide_counter > 0 then
545
+ content2 << "</div>\n"
546
+ slides << slide_source # add slide to slide stack
547
+ slide_source = "" # reset slide source buffer
530
548
  end
531
- content2 << "\n\n</div>" if slide_counter > 0
549
+
550
+ ## split slide source into header (optional) and content/body
551
+
552
+ slides2 = []
553
+ slides.each do |slide_source|
554
+ slide = Slide.new
555
+ if slide_source =~ /^\s*(<h.+?>.*?<\/h\d>)\s+(.*)/m # try to cut off header using non-greedy .+? pattern; tip test regex online at rubular.com
556
+ slide.header = $1
557
+ slide.content = $2
558
+ logger.debug " adding slide with header:\n#{slide.header}"
559
+ else
560
+ slide.content = slide_source
561
+ logger.debug " adding slide with *no* header"
562
+ end
563
+ slides2 << slide
564
+ end
565
+
566
+ # make content2 and slide2 available to erb template
567
+ # -- todo: cleanup variable names and use attr_readers for content and slide
568
+
569
+ @slides = slides2 # strutured content
570
+ @content = content2 # content all-in-one
571
+
532
572
 
533
573
  manifest.each do |entry|
534
574
  outname = entry[0]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slideshow
3
3
  version: !ruby/object:Gem::Version
4
- hash: 59
4
+ hash: 57
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 8
9
- - 2
10
- version: 0.8.2
9
+ - 3
10
+ version: 0.8.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Gerald Bauer
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-06-19 00:00:00 +02:00
18
+ date: 2010-06-23 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency