slideshow-models 3.1.1 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Manifest.txt +1 -0
- data/lib/slideshow/models/deck.rb +29 -22
- data/lib/slideshow/models/slide.rb +6 -5
- data/lib/slideshow/opts.rb +1 -1
- data/lib/slideshow/version.rb +2 -2
- data/test/test_filter.rb +49 -0
- data/test/test_slide.rb +31 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b621853de6619c00eb51f0ec88ad1ae89c9ddecb
|
4
|
+
data.tar.gz: b552e40f59f0524fde019ee3c85e8f1d5835aa38
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 15234f03210c70adae3370017077e80fab96cba607b9476f0e5b100c73bcfda81a8a26d4046195525f31e9a96d8f4f63d31ed47a4ae0ebbe4eb3591a92f5eb0a
|
7
|
+
data.tar.gz: 90d8e8ab65594cf2b340ca9656aec522c695ce2d445c268bc09acf18019e939859d60b2135f8b0a9bd685d465f8b311c46829595f1451f3892ea7a316aed2a51
|
data/Manifest.txt
CHANGED
@@ -5,6 +5,14 @@ module Slideshow
|
|
5
5
|
|
6
6
|
module DeckFilter
|
7
7
|
|
8
|
+
|
9
|
+
##
|
10
|
+
## note/todo: more alternatives/options for slide breaks
|
11
|
+
##
|
12
|
+
## add a simple slide break rule for two or more blank lines
|
13
|
+
|
14
|
+
|
15
|
+
|
8
16
|
# add slide directive before h1 (tells slideshow gem where to break slides)
|
9
17
|
#
|
10
18
|
# e.g. changes:
|
@@ -45,31 +53,23 @@ def add_slide_directive_before_h2( content )
|
|
45
53
|
end
|
46
54
|
|
47
55
|
|
48
|
-
|
49
|
-
# add slide directive before div h1 (for pandoc-generated html)
|
50
|
-
#
|
51
|
-
# e.g. changes:
|
52
|
-
# <div id='header'>
|
53
|
-
# <h1 id='optional' class='optional'>
|
54
|
-
# to
|
55
|
-
# html comment -> _S9SLIDE_
|
56
|
-
# <div id='header'>
|
57
|
-
# <h1 id='optional' class='optional'>
|
58
|
-
|
59
|
-
|
60
|
-
def add_slide_directive_before_div_h1( content )
|
56
|
+
def add_slide_directive_for_hr( content )
|
61
57
|
|
62
58
|
slide_count = 0
|
63
59
|
|
64
|
-
|
60
|
+
## replace <hr> or <hr /> with slide directive/comment
|
61
|
+
## note: hr gets **replaced/removed**
|
62
|
+
|
63
|
+
content = content.gsub( /<hr(\s*\/)?>/ ) do |match|
|
65
64
|
slide_count += 1
|
66
|
-
"\n<!-- _S9SLIDE_ -->\n
|
65
|
+
"\n<!-- _S9SLIDE_ -->\n"
|
67
66
|
end
|
68
|
-
|
69
|
-
puts " Adding #{slide_count} slide breaks (using
|
70
|
-
|
67
|
+
|
68
|
+
puts " Adding #{slide_count} slide breaks (using hr rule)..."
|
69
|
+
|
71
70
|
content
|
72
71
|
end
|
72
|
+
|
73
73
|
|
74
74
|
end # module DeckFilter
|
75
75
|
|
@@ -85,7 +85,7 @@ class Deck
|
|
85
85
|
attr_accessor :slides
|
86
86
|
|
87
87
|
|
88
|
-
def initialize( source, header_level:
|
88
|
+
def initialize( source, header_level: 2, use_slide: false )
|
89
89
|
@source = source ## keep a copy of the original source (input)
|
90
90
|
|
91
91
|
@header_level = header_level # e.g. 1 or 2 -- todo/fix: allow more options e.g. 1..2 etc.
|
@@ -107,10 +107,17 @@ class Deck
|
|
107
107
|
if @use_slide # only allow !SLIDE directives fo slide breaks?
|
108
108
|
# do nothing (no extra automagic slide breaks wanted)
|
109
109
|
else
|
110
|
-
|
111
|
-
|
112
|
-
|
110
|
+
|
111
|
+
## default rule for horizontal line/rule <hr> - gets replaced by slide directive
|
112
|
+
## - for now alway on/used (use !SLIDE only if not wanted for now)
|
113
|
+
@content = add_slide_directive_for_hr( @content )
|
114
|
+
|
115
|
+
if @header_level == 1
|
113
116
|
@content = add_slide_directive_before_h1( @content )
|
117
|
+
else # assume level 2
|
118
|
+
## note: level 2 also turns level 1 into slide breaks
|
119
|
+
@content = add_slide_directive_before_h1( @content )
|
120
|
+
@content = add_slide_directive_before_h2( @content )
|
114
121
|
end
|
115
122
|
end
|
116
123
|
|
@@ -17,7 +17,7 @@ module Slideshow
|
|
17
17
|
|
18
18
|
### def to_drop() SlideDrop.new( self ); end -- add - why? why not??
|
19
19
|
|
20
|
-
def initialize( content, header_level:
|
20
|
+
def initialize( content, header_level: 2 )
|
21
21
|
## options
|
22
22
|
@header_level = header_level
|
23
23
|
|
@@ -66,16 +66,17 @@ module Slideshow
|
|
66
66
|
# tip test regex online at rubular.com
|
67
67
|
# note/fix: needs to get improved to also handle case for h1 wrapped into div
|
68
68
|
|
69
|
-
if @header_level ==
|
70
|
-
pattern = /^(.*?)(<h2.*?>.*?<\/h2>)(.*)/m
|
71
|
-
else # assume header level 1
|
69
|
+
if @header_level == 1
|
72
70
|
pattern = /^(.*?)(<h1.*?>.*?<\/h1>)(.*)/m
|
71
|
+
else # assume header level 2
|
72
|
+
## note: header_level 2 also incl. header_level 1 slides
|
73
|
+
pattern = /^(.*?)(<(?:h1|h2).*?>.*?<\/(?:h1|h2)>)(.*)/m
|
73
74
|
end
|
74
75
|
|
75
76
|
if @content =~ pattern
|
76
77
|
@header = $2
|
77
78
|
@content_without_header = ($1 ? $1 : '') + ($3 ? $3 : '')
|
78
|
-
logger.debug " adding slide with header
|
79
|
+
logger.debug " adding slide with header:\n#{@header}"
|
79
80
|
else
|
80
81
|
@header = nil # todo: set to '' empty string? why not?
|
81
82
|
@content_without_header = @content
|
data/lib/slideshow/opts.rb
CHANGED
data/lib/slideshow/version.rb
CHANGED
data/test/test_filter.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_filter.rb
|
6
|
+
|
7
|
+
|
8
|
+
require 'helper'
|
9
|
+
|
10
|
+
|
11
|
+
class TestFilter < MiniTest::Test
|
12
|
+
|
13
|
+
include Slideshow::DeckFilter
|
14
|
+
|
15
|
+
def test_slide_breaks_for_hr
|
16
|
+
|
17
|
+
content =<<EOS
|
18
|
+
|
19
|
+
<p>some text</p>
|
20
|
+
<hr />
|
21
|
+
<p>some text</p>
|
22
|
+
<hr>
|
23
|
+
<p>some text</p>
|
24
|
+
|
25
|
+
EOS
|
26
|
+
|
27
|
+
content_expected =<<EOS
|
28
|
+
|
29
|
+
<p>some text</p>
|
30
|
+
|
31
|
+
<!-- _S9SLIDE_ -->
|
32
|
+
|
33
|
+
<p>some text</p>
|
34
|
+
|
35
|
+
<!-- _S9SLIDE_ -->
|
36
|
+
|
37
|
+
<p>some text</p>
|
38
|
+
|
39
|
+
EOS
|
40
|
+
|
41
|
+
|
42
|
+
assert_equal content_expected, add_slide_directive_for_hr( content )
|
43
|
+
|
44
|
+
end # method test_slide_breaks_for_hr
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
end # class TestFilter
|
49
|
+
|
data/test/test_slide.rb
CHANGED
@@ -37,7 +37,37 @@ EOS
|
|
37
37
|
assert_equal nil, slide.classes
|
38
38
|
assert_equal nil, slide.data_attributes
|
39
39
|
|
40
|
-
end # method
|
40
|
+
end # method test_slide1
|
41
|
+
|
42
|
+
|
43
|
+
def test_slide2
|
44
|
+
|
45
|
+
content =<<EOS
|
46
|
+
<h2 id="test-header-2">test header 2</h2>
|
47
|
+
|
48
|
+
<p>test content 2</p>
|
49
|
+
EOS
|
50
|
+
|
51
|
+
slide = Slideshow::Slide.new( content, header_level: 2 )
|
52
|
+
|
53
|
+
puts "header:"
|
54
|
+
pp slide.header
|
55
|
+
puts "content:"
|
56
|
+
pp slide.content
|
57
|
+
puts "content_without_header:"
|
58
|
+
pp slide.content_without_header
|
59
|
+
puts "classes:"
|
60
|
+
pp slide.classes
|
61
|
+
puts "data_attributes:"
|
62
|
+
pp slide.data_attributes
|
63
|
+
|
64
|
+
assert_equal %Q{<h2 id="test-header-2">test header 2</h2>}, slide.header
|
65
|
+
assert_equal content, slide.content
|
66
|
+
assert_equal nil, slide.classes
|
67
|
+
assert_equal nil, slide.data_attributes
|
68
|
+
|
69
|
+
end # method test_slide2
|
70
|
+
|
41
71
|
|
42
72
|
|
43
73
|
end # class TestSlide
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slideshow-models
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gerald Bauer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: props
|
@@ -177,6 +177,7 @@ files:
|
|
177
177
|
- test/templates/test/test.txt
|
178
178
|
- test/test_build.rb
|
179
179
|
- test/test_build_deck.rb
|
180
|
+
- test/test_filter.rb
|
180
181
|
- test/test_kramdown.rb
|
181
182
|
- test/test_slide.rb
|
182
183
|
- test/test_version.rb
|