slide_hero 0.0.2 → 0.0.3
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.
- checksums.yaml +4 -4
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +1 -0
- data/README.md +138 -63
- data/bin/slidehero +35 -9
- data/config.ru +1 -1
- data/lib/slide_hero/code.rb +4 -2
- data/lib/slide_hero/grouped_slides.rb +4 -3
- data/lib/slide_hero/image.rb +23 -0
- data/lib/slide_hero/media.rb +13 -0
- data/lib/slide_hero/note.rb +12 -0
- data/lib/slide_hero/presentation.rb +7 -2
- data/lib/slide_hero/slide.rb +15 -3
- data/lib/slide_hero/version.rb +1 -1
- data/lib/slide_hero/views/code.html.erb +2 -2
- data/lib/slide_hero/views/layout.html.erb +8 -1
- data/lib/slide_hero.rb +3 -0
- data/test/slide_hero/code_spec.rb +24 -3
- data/test/slide_hero/dsl_spec.rb +13 -2
- data/test/slide_hero/grouped_slides_spec.rb +18 -0
- data/test/slide_hero/image_spec.rb +15 -0
- data/test/slide_hero/media_spec.rb +27 -0
- data/test/slide_hero/note_spec.rb +10 -0
- data/test/slide_hero/presentation_spec.rb +22 -0
- data/test/slide_hero/slide_spec.rb +36 -4
- data/test/slide_hero_spec.rb +3 -0
- metadata +16 -5
- /data/test/fixtures/{testclass.rb → code/testclass.rb} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7412ed3f8e771683d9a861f4873cb426323f25b0
|
4
|
+
data.tar.gz: 70c8c9d3dadbfa3ebc399e18394c377948acbd00
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a3ae4ec73cefdd4ca4154adfcc75032148f46ddcc5f7f150d6976beb48656f7f56ef7b3737fc8b9b002315cb1d6337ded401ef1878fd7c761ed2094f7434412d
|
7
|
+
data.tar.gz: fcd6928a0f84a85223d3c14bc381bcf1b1c4e897e96dd9c970f13a154f5aa0728014a4cc102f7e6e0672ce2aab4c1f3c6bcf99fa1c0c5b453174bc5efcaccea3
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
slide_hero
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.0.0
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -9,7 +9,9 @@ Requires Ruby 2.0.0
|
|
9
9
|
|
10
10
|
Add this line to your application's Gemfile:
|
11
11
|
|
12
|
-
|
12
|
+
```ruby
|
13
|
+
gem 'slide_hero'
|
14
|
+
```
|
13
15
|
|
14
16
|
And then execute:
|
15
17
|
|
@@ -48,107 +50,180 @@ The DSL for SlideHero was created to add expressibility to creating slides.
|
|
48
50
|
|
49
51
|
**presentation**
|
50
52
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
53
|
+
```ruby
|
54
|
+
presentation "My Presentation" do
|
55
|
+
|
56
|
+
end
|
57
|
+
```
|
55
58
|
|
56
59
|
`#presentation` indicates the beginning of a presentation. You can have one of these per file. The String passed is used as the title for the presentation.
|
57
60
|
|
58
61
|
**slide**
|
59
62
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
63
|
+
```ruby
|
64
|
+
presentation "My Presentation" do
|
65
|
+
slide "A slide" do
|
66
|
+
#…
|
67
|
+
end
|
68
|
+
end
|
69
|
+
```
|
65
70
|
|
66
71
|
`#slide` is used to create a new slide. The string is the headline of the slide. `#slide` can take an optional argument of `headline_size:`. Valid options are :small, :medium, :large. These create h3, h2, and h1 elements respectively.
|
67
72
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
73
|
+
```ruby
|
74
|
+
presentation "My Presentation" do
|
75
|
+
slide "A slide", headline_size: :small do
|
76
|
+
#…
|
77
|
+
end
|
78
|
+
end
|
79
|
+
```
|
80
|
+
|
74
81
|
`#slide` can have transitions applied as well. Valid transitions are: :cube, :page, :concave, :zoom, :linear, :fade, :none, and :default
|
75
82
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
83
|
+
```ruby
|
84
|
+
presentation "My Presentation" do
|
85
|
+
slide "A slide", transition: :slide do
|
86
|
+
#…
|
87
|
+
end
|
88
|
+
end
|
89
|
+
```
|
90
|
+
**defaults**
|
91
|
+
|
92
|
+
```ruby
|
93
|
+
presentation "My Presentation" do
|
94
|
+
defaults headline_size: :medium, transition: :fade
|
95
|
+
|
96
|
+
slide "A slide" do
|
97
|
+
#…
|
98
|
+
end
|
99
|
+
|
100
|
+
slide "Some slides override", headline_size: :large do
|
101
|
+
#…#…
|
102
|
+
end
|
103
|
+
end
|
104
|
+
```
|
105
|
+
|
106
|
+
You can set slide defaults for `headline_size` or `transition` by using `#defaults`. A slide default applies to all slides unless an individual slide overrides it.
|
107
|
+
|
82
108
|
**points**
|
83
109
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
110
|
+
```ruby
|
111
|
+
presentation "My Presentation" do
|
112
|
+
slide "A slide" do
|
113
|
+
point "An interesting Point"
|
114
|
+
end
|
115
|
+
end
|
116
|
+
```
|
89
117
|
|
90
118
|
`#point` adds p tag wrapped text to your presentation
|
91
119
|
|
92
120
|
**grouped_slides**
|
93
121
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
end
|
122
|
+
```ruby
|
123
|
+
presentation "My Presentation" do
|
124
|
+
grouped_slides do
|
125
|
+
slide "Slide 1" do
|
126
|
+
end
|
127
|
+
slide "Slide 2" do
|
101
128
|
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
```
|
102
132
|
|
103
133
|
`#grouped_slides` lets you nest slides. In reveal, this translates into vertical slides.
|
104
134
|
|
105
135
|
**lists**
|
106
136
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
point "An even more interesting point about nargles"
|
114
|
-
end
|
115
|
-
end
|
116
|
-
slide "Slide 2" do
|
117
|
-
list(:ordered) do
|
118
|
-
point "I should go first"
|
119
|
-
point "I'm ok going second"
|
120
|
-
end
|
121
|
-
end
|
137
|
+
```ruby
|
138
|
+
presentation "My Presentation" do
|
139
|
+
slide "Slide 1" do
|
140
|
+
list do
|
141
|
+
point "An interesting point about monkeys"
|
142
|
+
point "An even more interesting point about nargles"
|
122
143
|
end
|
144
|
+
end
|
145
|
+
slide "Slide 2" do
|
146
|
+
list(:ordered) do
|
147
|
+
point "I should go first"
|
148
|
+
point "I'm ok going second"
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
152
|
+
```
|
123
153
|
|
124
154
|
`#list` must be nested in a slide. It takes an optional argument of :ordered to
|
125
155
|
create an ordered list. List items are added by the `#point` method.
|
126
156
|
|
127
157
|
**code**
|
128
158
|
|
159
|
+
```ruby
|
160
|
+
presentation "My Presentation" do
|
161
|
+
slide "A slide" do
|
162
|
+
code(:ruby) do
|
163
|
+
"working_code.rb"
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
```
|
168
|
+
|
169
|
+
`#code` must be nested in a slide. It loads any code file in the same directory as the file.
|
170
|
+
The language passed as an argument will be embedded in the markup.
|
171
|
+
code must be in the `code` folder. An optional second argument of a base location can be passed into the code method. Your folder must also have a `code` folder.
|
172
|
+
All supported languages can be found on the [Highlight.js Page](http://softwaremaniacs.org/media/soft/highlight/test.html)
|
173
|
+
|
174
|
+
**note**
|
175
|
+
|
176
|
+
```ruby
|
177
|
+
presentation "My Presentation" do
|
178
|
+
slide "A slide" do
|
179
|
+
note "Remind them to shower"
|
180
|
+
end
|
181
|
+
end
|
182
|
+
```
|
183
|
+
|
184
|
+
`#note` must be nested in a slide. These will show up on speaker's notes.
|
185
|
+
|
186
|
+
**image**
|
187
|
+
|
188
|
+
```ruby
|
189
|
+
presentation "My Presentation" do
|
190
|
+
slide "A slide" do
|
191
|
+
image "chunky_bacon.png"
|
192
|
+
end
|
193
|
+
end
|
194
|
+
```
|
195
|
+
`#image` must be nested in a slide. All images in the images folder will be ported over on compilation. Use the name of the image, with out the 'images' subfolder
|
196
|
+
In this example, it will load an image named 'chunky_bacon.png in the images folder.
|
197
|
+
|
198
|
+
**media**
|
199
|
+
|
129
200
|
presentation "My Presentation" do
|
130
|
-
slide "A slide" do
|
131
|
-
|
132
|
-
|
133
|
-
|
201
|
+
slide "A slide with video" do
|
202
|
+
media "video.mp4", type: video
|
203
|
+
end
|
204
|
+
|
205
|
+
slide "A slide with video" do
|
206
|
+
media "audio.mp3", type: audio
|
134
207
|
end
|
135
208
|
end
|
136
209
|
|
137
|
-
`#
|
210
|
+
`#media` must be nested in a slide. This will create an auto playing video or audio element on the slide. Files must be in the audio or video directory.
|
138
211
|
|
139
212
|
#### Animation
|
140
213
|
|
141
214
|
Animation for points are supported.
|
142
215
|
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
216
|
+
```ruby
|
217
|
+
#…
|
218
|
+
slide do
|
219
|
+
point "My point", animation: "grow"
|
220
|
+
list do
|
221
|
+
point "My", animation: "step"
|
222
|
+
point "Staggered", animation: "step"
|
223
|
+
point "List", animation: "step"
|
224
|
+
end
|
225
|
+
end
|
226
|
+
```
|
152
227
|
|
153
228
|
Supported animations are: step, grow, shrink, roll-in, fade-out, highlight-red, highlight-green, and highlight-blue
|
154
229
|
|
data/bin/slidehero
CHANGED
@@ -10,26 +10,52 @@ class PresentationGenerator < Thor
|
|
10
10
|
def new(name)
|
11
11
|
@name = name
|
12
12
|
template 'templates/new_presentation.tt', "#{name}/presentation.rb"
|
13
|
+
['/images', '/audio', '/video', '/code']. each do |media|
|
14
|
+
empty_directory "#{name}/#{media}"
|
15
|
+
end
|
13
16
|
end
|
14
17
|
|
15
18
|
desc "compile PRESENTATION_NAME (defaults to presentation.rb", "Compile presentation"
|
16
|
-
def compile(name = 'presentation.rb')
|
17
|
-
directory 'vendor/reveal.js',
|
18
|
-
|
19
|
+
def compile(name = 'presentation.rb', folder="presentation")
|
20
|
+
directory 'vendor/reveal.js', folder
|
21
|
+
move_slide_files(name, folder)
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "move_slide_files NAME DEST_FOLDER", "Only move the user generated files"
|
25
|
+
def move_slide_files(name, folder)
|
26
|
+
['/images', '/audio', '/video', '/code']. each do |media|
|
27
|
+
FileUtils.cp_r(File.dirname(File.realdirpath(name)) + media, "#{folder}")
|
28
|
+
end
|
29
|
+
|
30
|
+
File.open("#{folder}/index.html", 'w+') do |f|
|
19
31
|
f.puts eval(File.read(name), SlideHero.get_binding)
|
20
32
|
end
|
21
33
|
end
|
22
34
|
|
23
35
|
desc "serve FILENAME", "starts a server running your presentation on port 9292"
|
24
36
|
def serve(name = 'presentation.rb')
|
25
|
-
|
26
|
-
File.open('.tmp/index.html', 'w+') do |f|
|
27
|
-
f.puts eval(File.read(name), SlideHero.get_binding)
|
28
|
-
end
|
37
|
+
compile(name, '.tmp')
|
29
38
|
puts "Go checkout your awesome presentation at http://localhost:9292!"
|
30
|
-
|
31
|
-
|
39
|
+
|
40
|
+
rackupPid = Process.spawn("rackup #{Gem.loaded_specs['slide_hero'].full_gem_path}/config.ru")
|
41
|
+
|
42
|
+
last_update = Time.now
|
43
|
+
loop do
|
44
|
+
if File.mtime(name) > last_update
|
45
|
+
puts "File change noted!"
|
46
|
+
puts "Recompiling"
|
47
|
+
move_slide_files(name, '.tmp')
|
48
|
+
last_update = File.mtime(name)
|
49
|
+
end
|
50
|
+
sleep 1
|
51
|
+
end
|
52
|
+
|
53
|
+
rescue Exception => e
|
54
|
+
puts e
|
55
|
+
Process.kill(9, rackupPid) rescue Errno::ESRCH
|
32
56
|
remove_dir '.tmp'
|
57
|
+
puts "GOING DOWN!"
|
58
|
+
exit 0
|
33
59
|
end
|
34
60
|
end
|
35
61
|
|
data/config.ru
CHANGED
data/lib/slide_hero/code.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
module SlideHero
|
2
2
|
class Code
|
3
|
-
|
3
|
+
attr_reader :language, :source, :location
|
4
|
+
def initialize(language, code_path=Dir.pwd, &code_file)
|
4
5
|
@language = language
|
5
|
-
@
|
6
|
+
@location = "#{code_path}/code/#{code_file.call}"
|
7
|
+
@source = File.read(location)
|
6
8
|
rescue Errno::ENOENT
|
7
9
|
abort "#{Dir.pwd}/#{code_file.call} not found"
|
8
10
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module SlideHero
|
2
2
|
class GroupedSlides
|
3
|
-
def initialize(&block)
|
3
|
+
def initialize(slide_defaults={}, &block)
|
4
|
+
@slide_defaults = slide_defaults
|
4
5
|
instance_eval(&block)
|
5
6
|
end
|
6
7
|
|
@@ -10,8 +11,8 @@ module SlideHero
|
|
10
11
|
'lib/slide_hero/views/grouped_slides.html.erb')).render(self)
|
11
12
|
end
|
12
13
|
|
13
|
-
def slide(headline, &block)
|
14
|
-
slides << Slide.new(headline, &block).compile
|
14
|
+
def slide(headline, **kwargs, &block)
|
15
|
+
slides << Slide.new(headline, @slide_defaults.merge(**kwargs), &block).compile
|
15
16
|
end
|
16
17
|
|
17
18
|
def slides
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module SlideHero
|
2
|
+
class Image
|
3
|
+
attr_reader :location, :alt_text, :width, :height
|
4
|
+
def initialize(location, alt_text="", width:nil, height:nil)
|
5
|
+
@location = location
|
6
|
+
@alt_text = alt_text
|
7
|
+
@width = width
|
8
|
+
@height = height
|
9
|
+
end
|
10
|
+
|
11
|
+
def compile
|
12
|
+
%{<img#{width_attribute}#{height_attribute} src="images/#{location}" alt="#{alt_text}">}
|
13
|
+
end
|
14
|
+
|
15
|
+
def height_attribute
|
16
|
+
%{ height="#{height}"} if height
|
17
|
+
end
|
18
|
+
|
19
|
+
def width_attribute
|
20
|
+
%{ width="#{width}"} if width
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -5,6 +5,7 @@ module SlideHero
|
|
5
5
|
attr_reader :title
|
6
6
|
def initialize(title, &block)
|
7
7
|
@title = title
|
8
|
+
@slide_defaults = {}
|
8
9
|
instance_eval(&block)
|
9
10
|
end
|
10
11
|
|
@@ -17,12 +18,16 @@ module SlideHero
|
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
21
|
+
def defaults(args)
|
22
|
+
@slide_defaults = args
|
23
|
+
end
|
24
|
+
|
20
25
|
def slide(title, **kwargs, &slide_block)
|
21
|
-
slides << Slide.new(title, **kwargs, &slide_block).compile
|
26
|
+
slides << Slide.new(title, @slide_defaults.merge(**kwargs), &slide_block).compile
|
22
27
|
end
|
23
28
|
|
24
29
|
def grouped_slides(&block)
|
25
|
-
slides << GroupedSlides.new(&block).compile
|
30
|
+
slides << GroupedSlides.new(@slide_defaults, &block).compile
|
26
31
|
end
|
27
32
|
|
28
33
|
def collected_slides
|
data/lib/slide_hero/slide.rb
CHANGED
@@ -16,21 +16,33 @@ module SlideHero
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def point(text, animation: nil)
|
19
|
-
points << Point.new(text, animation:
|
19
|
+
points << Point.new(text, animation: animation).compile
|
20
20
|
end
|
21
21
|
|
22
22
|
def list(style=:unordered, &block)
|
23
23
|
points << List.new(style, &block).compile
|
24
24
|
end
|
25
25
|
|
26
|
-
def code(
|
27
|
-
points << Code.new(
|
26
|
+
def code(*args, &code)
|
27
|
+
points << Code.new(*args, &code).compile
|
28
28
|
end
|
29
29
|
|
30
30
|
def points
|
31
31
|
@points ||= []
|
32
32
|
end
|
33
33
|
|
34
|
+
def note(text)
|
35
|
+
points << Note.new(text).compile
|
36
|
+
end
|
37
|
+
|
38
|
+
def image(*args, **kwargs)
|
39
|
+
points << Image.new(*args, **kwargs).compile
|
40
|
+
end
|
41
|
+
|
42
|
+
def media(*args, **kwargs)
|
43
|
+
points << Media.new(*args, **kwargs).compile
|
44
|
+
end
|
45
|
+
|
34
46
|
private
|
35
47
|
def size_to_markup
|
36
48
|
{
|
data/lib/slide_hero/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
<pre><code data-trim>
|
2
|
-
<%=
|
1
|
+
<pre><code data-trim class="<%= language %>">
|
2
|
+
<%= source %>
|
3
3
|
</code></pre>
|
@@ -37,6 +37,11 @@
|
|
37
37
|
|
38
38
|
theme: Reveal.getQueryHash().theme, // available themes are in /css/theme
|
39
39
|
transition: Reveal.getQueryHash().transition || 'default', // default/cube/page/concave/zoom/linear/fade/none
|
40
|
+
leap: {
|
41
|
+
naturalSwipe : true, // Invert swipe gestures
|
42
|
+
pointerOpacity : 0.5, // Set pointer opacity to 0.5
|
43
|
+
pointerColor : '#d80000' // Red pointer
|
44
|
+
},
|
40
45
|
|
41
46
|
// Optional libraries used to extend on reveal.js
|
42
47
|
dependencies: [
|
@@ -45,7 +50,9 @@
|
|
45
50
|
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
|
46
51
|
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
|
47
52
|
{ src: 'plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
|
48
|
-
{ src: 'plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } }
|
53
|
+
{ src: 'plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } },
|
54
|
+
{ src: 'plugin/remotes/remotes.js', async: true, condition: function() { return !!document.body.classList; } },
|
55
|
+
{ src: 'plugin/leap/leap.js', async: true }
|
49
56
|
]
|
50
57
|
});
|
51
58
|
|
data/lib/slide_hero.rb
CHANGED
@@ -6,6 +6,9 @@ require_relative "slide_hero/list_point"
|
|
6
6
|
require_relative "slide_hero/grouped_slides"
|
7
7
|
require_relative "slide_hero/code"
|
8
8
|
require_relative "slide_hero/presentation"
|
9
|
+
require_relative "slide_hero/note"
|
10
|
+
require_relative "slide_hero/image"
|
11
|
+
require_relative "slide_hero/media"
|
9
12
|
require_relative "slide_hero/dsl"
|
10
13
|
|
11
14
|
module SlideHero
|
@@ -2,12 +2,32 @@ require 'minitest_helper'
|
|
2
2
|
|
3
3
|
module SlideHero
|
4
4
|
describe Code do
|
5
|
+
it "takes an optional base path of where to look for files" do
|
6
|
+
code = Code.new(:ruby, File.join(Dir.pwd,"test","fixtures")) do
|
7
|
+
"testclass.rb"
|
8
|
+
end
|
9
|
+
code.location.must_equal(File.join(Dir.pwd,"test","fixtures","code", "testclass.rb"))
|
10
|
+
end
|
11
|
+
it "exposes language from initialization value" do
|
12
|
+
code = Code.new(:ruby, File.join(Dir.pwd,"test","fixtures")) do
|
13
|
+
"testclass.rb"
|
14
|
+
end
|
15
|
+
code.language.must_equal :ruby
|
16
|
+
end
|
17
|
+
|
18
|
+
it "exposes source from initialization value" do
|
19
|
+
code = Code.new(:ruby, File.join(Dir.pwd,"test","fixtures")) do
|
20
|
+
"testclass.rb"
|
21
|
+
end
|
22
|
+
code.source.must_include "class Working"
|
23
|
+
end
|
24
|
+
|
5
25
|
it "formats code properly" do
|
6
|
-
code = Code.new(:ruby) do
|
7
|
-
"
|
26
|
+
code = Code.new(:ruby, File.join(Dir.pwd,"test","fixtures")) do
|
27
|
+
"testclass.rb"
|
8
28
|
end
|
9
29
|
|
10
|
-
code.compile.strip.must_equal '<pre><code data-trim>
|
30
|
+
code.compile.strip.must_equal '<pre><code data-trim class="ruby">
|
11
31
|
class Working
|
12
32
|
def some_method
|
13
33
|
"woot!"
|
@@ -25,5 +45,6 @@ end
|
|
25
45
|
end
|
26
46
|
end.must_raise SystemExit
|
27
47
|
end
|
48
|
+
|
28
49
|
end
|
29
50
|
end
|
data/test/slide_hero/dsl_spec.rb
CHANGED
@@ -15,13 +15,24 @@ module SlideHero
|
|
15
15
|
it "passes code properly" do
|
16
16
|
pres = presentation "Code" do
|
17
17
|
slide "Code test" do
|
18
|
-
code(:ruby) do
|
19
|
-
"
|
18
|
+
code(:ruby, File.join(Dir.pwd,"test","fixtures")) do
|
19
|
+
"testclass.rb"
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
pres.must_include "class Working"
|
25
25
|
end
|
26
|
+
it "handles defaults properly" do
|
27
|
+
pres = presentation "Defaults" do
|
28
|
+
defaults headline_size: :medium
|
29
|
+
slide "Outer Slide"
|
30
|
+
grouped_slides do
|
31
|
+
slide "Inner Slide"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
pres.must_include "<h2>Outer Slide</h2>"
|
35
|
+
pres.must_include "<h2>Inner Slide</h2>"
|
36
|
+
end
|
26
37
|
end
|
27
38
|
end
|
@@ -24,6 +24,24 @@ module SlideHero
|
|
24
24
|
"</section>" +
|
25
25
|
"</section>"
|
26
26
|
end
|
27
|
+
|
28
|
+
it "takes all arguments slide handles" do
|
29
|
+
grouped_slides = GroupedSlides.new do
|
30
|
+
slide "Title", headline_size: :medium, transition: :zoom do
|
31
|
+
point "Made one"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
grouped_slides.compile.must_include "transition"
|
36
|
+
grouped_slides.compile.must_include "h2"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
it "can have defaults passed in" do
|
41
|
+
grouped_slides = GroupedSlides.new(headline_size: :medium) do
|
42
|
+
slide "Title"
|
43
|
+
end
|
44
|
+
grouped_slides.compile.must_include "<h2>Title</h2>"
|
27
45
|
end
|
28
46
|
end
|
29
47
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
module SlideHero
|
4
|
+
describe Image do
|
5
|
+
it "takes an image path and renders appropriate markup" do
|
6
|
+
image = Image.new("cornify.gif", "Unicorn", width: 280, height: 326)
|
7
|
+
image.compile.must_equal %{<img width="280" height="326" src="images/cornify.gif" alt="Unicorn">}
|
8
|
+
end
|
9
|
+
|
10
|
+
it "doesn't require all fields" do
|
11
|
+
image = Image.new("cornify.gif")
|
12
|
+
image.compile.must_equal %{<img src="images/cornify.gif" alt="">}
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
module SlideHero
|
4
|
+
describe Media do
|
5
|
+
describe "initialization" do
|
6
|
+
it "is initialized with a url" do
|
7
|
+
media = Media.new("http://www.youtube.com/watch?v=dQw4w9WgXcQ", type: :video)
|
8
|
+
media.url.must_equal "http://www.youtube.com/watch?v=dQw4w9WgXcQ"
|
9
|
+
media.type.must_equal :video
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "video type" do
|
14
|
+
it "compiles to html fragment" do
|
15
|
+
media = Media.new("file.mp4", type: :video)
|
16
|
+
media.compile.must_equal %{<video data-autoplay src="video/file.mp4"></video>}
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "audio type" do
|
21
|
+
it "compiles to html fragment" do
|
22
|
+
media = Media.new("audio.mp3", type: :audio)
|
23
|
+
media.compile.must_equal %{<audio data-autoplay src="audio/audio.mp3"></audio>}
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -23,6 +23,17 @@ module SlideHero
|
|
23
23
|
pres.slides.count.must_equal 1
|
24
24
|
end
|
25
25
|
|
26
|
+
it "adds defaults to slides" do
|
27
|
+
pres = Presentation.new("slides with defaults") do
|
28
|
+
defaults headline_size: :small
|
29
|
+
|
30
|
+
slide "My slide" do
|
31
|
+
point "an amazing point"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
pres.slides.first.must_include "h3"
|
35
|
+
end
|
36
|
+
|
26
37
|
it "takes all of slide's options" do
|
27
38
|
pres = Presentation.new("slides") do
|
28
39
|
slide("My slide", headline_size: :small, transition: :default) do
|
@@ -32,6 +43,17 @@ module SlideHero
|
|
32
43
|
pres.slides.count.must_equal 1
|
33
44
|
end
|
34
45
|
|
46
|
+
it "overrides slide's defaults" do
|
47
|
+
pres = Presentation.new("slides") do
|
48
|
+
defaults headline_size: :medium
|
49
|
+
|
50
|
+
slide("My slide", headline_size: :small, transition: :default) do
|
51
|
+
point "Bananas are tastey"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
pres.slides.first.must_include "h3"
|
55
|
+
end
|
56
|
+
|
35
57
|
it "takes grouped_slides" do
|
36
58
|
pres = Presentation.new("slides") do
|
37
59
|
grouped_slides do
|
@@ -84,7 +84,7 @@ module SlideHero
|
|
84
84
|
|
85
85
|
assert_dom_match slide.compile, "<section data-transition=\"default\">"+
|
86
86
|
"<h1>Animation</h1>" +
|
87
|
-
"<p>I'm animated!</p>" +
|
87
|
+
"<p class=\"fragment \">I'm animated!</p>" +
|
88
88
|
"</section>"
|
89
89
|
|
90
90
|
end
|
@@ -126,14 +126,14 @@ module SlideHero
|
|
126
126
|
describe "#code" do
|
127
127
|
it "embeds code in a slide" do
|
128
128
|
slide = Slide.new "Code" do
|
129
|
-
code(:ruby) do
|
130
|
-
"
|
129
|
+
code(:ruby, File.join(Dir.pwd,"test","fixtures")) do
|
130
|
+
"testclass.rb"
|
131
131
|
end
|
132
132
|
end
|
133
133
|
|
134
134
|
assert_dom_match slide.compile, "<section data-transition=\"default\">" +
|
135
135
|
"<h1>Code</h1>" +
|
136
|
-
"<pre><code data-trim>
|
136
|
+
"<pre><code data-trim class=\"ruby\">
|
137
137
|
class Working
|
138
138
|
def some_method
|
139
139
|
\"woot!\"
|
@@ -143,5 +143,37 @@ end
|
|
143
143
|
</code></pre></section>"
|
144
144
|
end
|
145
145
|
end
|
146
|
+
|
147
|
+
describe "#note" do
|
148
|
+
it "returns a formatted note" do
|
149
|
+
slide = Slide.new "Note" do
|
150
|
+
note "Don't forget to bring a towel"
|
151
|
+
end
|
152
|
+
assert_dom_match slide.compile, "<section data-transition=\"default\">" +
|
153
|
+
"<h1>Note</h1>" +
|
154
|
+
"<aside class=\"notes\">Don't forget to bring a towel</aside>" +
|
155
|
+
"</section>"
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
describe "#image" do
|
160
|
+
it "returns a formatted Image" do
|
161
|
+
slide = Slide.new "Image" do
|
162
|
+
image("cornify.gif", "Unicorn", width: 280, height: 326)
|
163
|
+
end
|
164
|
+
|
165
|
+
slide.compile.must_include %{<img width="280" height="326" src="images/cornify.gif" alt="Unicorn">}
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
describe "#media" do
|
170
|
+
it "returns a formatted media element" do
|
171
|
+
slide = Slide.new "Video" do
|
172
|
+
media "video.mp4", type: :video
|
173
|
+
end
|
174
|
+
|
175
|
+
slide.compile.must_include %{<video data-autoplay src="video/video.mp4"></video>}
|
176
|
+
end
|
177
|
+
end
|
146
178
|
end
|
147
179
|
end
|
data/test/slide_hero_spec.rb
CHANGED
@@ -7,6 +7,9 @@ require_relative 'slide_hero/grouped_slides_spec'
|
|
7
7
|
require_relative 'slide_hero/code_spec'
|
8
8
|
require_relative 'slide_hero/presentation_spec'
|
9
9
|
require_relative 'slide_hero/dsl_spec'
|
10
|
+
require_relative 'slide_hero/note_spec'
|
11
|
+
require_relative 'slide_hero/image_spec'
|
12
|
+
require_relative 'slide_hero/media_spec'
|
10
13
|
|
11
14
|
describe ::SlideHero do
|
12
15
|
it "has a version" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slide_hero
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steven Nunez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tilt
|
@@ -131,6 +131,8 @@ extensions: []
|
|
131
131
|
extra_rdoc_files: []
|
132
132
|
files:
|
133
133
|
- .gitignore
|
134
|
+
- .ruby-gemset
|
135
|
+
- .ruby-version
|
134
136
|
- .travis.yml
|
135
137
|
- Gemfile
|
136
138
|
- Guardfile
|
@@ -143,8 +145,11 @@ files:
|
|
143
145
|
- lib/slide_hero/code.rb
|
144
146
|
- lib/slide_hero/dsl.rb
|
145
147
|
- lib/slide_hero/grouped_slides.rb
|
148
|
+
- lib/slide_hero/image.rb
|
146
149
|
- lib/slide_hero/list.rb
|
147
150
|
- lib/slide_hero/list_point.rb
|
151
|
+
- lib/slide_hero/media.rb
|
152
|
+
- lib/slide_hero/note.rb
|
148
153
|
- lib/slide_hero/point.rb
|
149
154
|
- lib/slide_hero/presentation.rb
|
150
155
|
- lib/slide_hero/slide.rb
|
@@ -160,13 +165,16 @@ files:
|
|
160
165
|
- lib/slide_hero/views/unordered_list.html.erb
|
161
166
|
- slide_hero.gemspec
|
162
167
|
- templates/new_presentation.tt
|
163
|
-
- test/fixtures/testclass.rb
|
168
|
+
- test/fixtures/code/testclass.rb
|
164
169
|
- test/minitest_helper.rb
|
165
170
|
- test/slide_hero/code_spec.rb
|
166
171
|
- test/slide_hero/dsl_spec.rb
|
167
172
|
- test/slide_hero/grouped_slides_spec.rb
|
173
|
+
- test/slide_hero/image_spec.rb
|
168
174
|
- test/slide_hero/list_point_spec.rb
|
169
175
|
- test/slide_hero/list_spec.rb
|
176
|
+
- test/slide_hero/media_spec.rb
|
177
|
+
- test/slide_hero/note_spec.rb
|
170
178
|
- test/slide_hero/point_spec.rb
|
171
179
|
- test/slide_hero/presentation_spec.rb
|
172
180
|
- test/slide_hero/slide_spec.rb
|
@@ -259,18 +267,21 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
259
267
|
version: '0'
|
260
268
|
requirements: []
|
261
269
|
rubyforge_project:
|
262
|
-
rubygems_version: 2.1.
|
270
|
+
rubygems_version: 2.1.10
|
263
271
|
signing_key:
|
264
272
|
specification_version: 4
|
265
273
|
summary: Used for creating slide decks backed by reveal.js
|
266
274
|
test_files:
|
267
|
-
- test/fixtures/testclass.rb
|
275
|
+
- test/fixtures/code/testclass.rb
|
268
276
|
- test/minitest_helper.rb
|
269
277
|
- test/slide_hero/code_spec.rb
|
270
278
|
- test/slide_hero/dsl_spec.rb
|
271
279
|
- test/slide_hero/grouped_slides_spec.rb
|
280
|
+
- test/slide_hero/image_spec.rb
|
272
281
|
- test/slide_hero/list_point_spec.rb
|
273
282
|
- test/slide_hero/list_spec.rb
|
283
|
+
- test/slide_hero/media_spec.rb
|
284
|
+
- test/slide_hero/note_spec.rb
|
274
285
|
- test/slide_hero/point_spec.rb
|
275
286
|
- test/slide_hero/presentation_spec.rb
|
276
287
|
- test/slide_hero/slide_spec.rb
|
File without changes
|