rhet-butler 0.5.0 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/default-configuration/assets/javascript/keyboard-nav.js +91 -0
- data/default-configuration/assets/javascript/rhet-present.js +855 -0
- data/default-configuration/assets/javascript/rhet-present.min.js +55 -0
- data/default-configuration/assets/stylesheets/_animate-helpers.scss +41 -0
- data/default-configuration/assets/stylesheets/animate/_attention.scss +36 -0
- data/default-configuration/assets/stylesheets/animate/_bounce.scss +71 -0
- data/default-configuration/assets/stylesheets/animate/_fade.scss +56 -0
- data/default-configuration/assets/stylesheets/animate/_flip.scss +98 -0
- data/default-configuration/assets/stylesheets/animate/_lightSpeed.scss +20 -0
- data/default-configuration/assets/stylesheets/animate/_roll.scss +20 -0
- data/default-configuration/assets/stylesheets/animate/_rotate.scss +40 -0
- data/default-configuration/assets/stylesheets/animate/_special.scss +17 -0
- data/default-configuration/assets/stylesheets/animate/_windblown.sass +17 -0
- data/default-configuration/assets/stylesheets/animate/attention/._pulse.scss.swp +0 -0
- data/default-configuration/assets/stylesheets/animate/attention/_flash.scss +34 -0
- data/default-configuration/assets/stylesheets/animate/attention/_pulse.scss +28 -0
- data/default-configuration/assets/stylesheets/animate/attention/_shake.scss +53 -0
- data/default-configuration/assets/stylesheets/animate/attention/_swing.scss +40 -0
- data/default-configuration/assets/stylesheets/animate/attention/_tada.scss +51 -0
- data/default-configuration/assets/stylesheets/animate/attention/_wiggle.scss +52 -0
- data/default-configuration/assets/stylesheets/animate/attention/_wobble.scss +41 -0
- data/default-configuration/assets/stylesheets/animate/bounce/_bounceIn.scss +151 -0
- data/default-configuration/assets/stylesheets/animate/bounce/_bounceOut.scss +139 -0
- data/default-configuration/assets/stylesheets/animate/fade/_fadeIn.sass +139 -0
- data/default-configuration/assets/stylesheets/animate/fade/_fadeOut.sass +139 -0
- data/default-configuration/assets/stylesheets/animate/flip/_flipIn.scss +78 -0
- data/default-configuration/assets/stylesheets/animate/flip/_flipOut.scss +66 -0
- data/default-configuration/assets/stylesheets/animate/lightSpeed/_lightSpeedIn.scss +37 -0
- data/default-configuration/assets/stylesheets/animate/lightSpeed/_lightSpeedOut.scss +29 -0
- data/default-configuration/assets/stylesheets/animate/roll/_rollIn.scss +29 -0
- data/default-configuration/assets/stylesheets/animate/roll/_rollOut.scss +28 -0
- data/default-configuration/assets/stylesheets/animate/rotate/_rotateIn.scss +208 -0
- data/default-configuration/assets/stylesheets/animate/rotate/_rotateOut.scss +208 -0
- data/default-configuration/assets/stylesheets/animate/special/_hinge.scss +49 -0
- data/default-configuration/assets/stylesheets/animate/windblown/_windblownIn.sass +28 -0
- data/default-configuration/assets/stylesheets/animate/windblown/_windblownOut.sass +24 -0
- data/default-configuration/assets/stylesheets/font.css +30 -0
- data/default-configuration/assets/stylesheets/highlight/arta.css +158 -0
- data/default-configuration/assets/stylesheets/highlight/ascetic.css +50 -0
- data/default-configuration/assets/stylesheets/highlight/brown_paper.css +104 -0
- data/default-configuration/assets/stylesheets/highlight/brown_papersq.png +0 -0
- data/default-configuration/assets/stylesheets/highlight/dark.css +103 -0
- data/default-configuration/assets/stylesheets/highlight/default.css +135 -0
- data/default-configuration/assets/stylesheets/highlight/far.css +111 -0
- data/default-configuration/assets/stylesheets/highlight/github.css +127 -0
- data/default-configuration/assets/stylesheets/highlight/googlecode.css +144 -0
- data/default-configuration/assets/stylesheets/highlight/idea.css +121 -0
- data/default-configuration/assets/stylesheets/highlight/ir_black.css +104 -0
- data/default-configuration/assets/stylesheets/highlight/magula.css +120 -0
- data/default-configuration/assets/stylesheets/highlight/monokai.css +114 -0
- data/default-configuration/assets/stylesheets/highlight/pojoaque.css +104 -0
- data/default-configuration/assets/stylesheets/highlight/pojoaque.jpg +0 -0
- data/default-configuration/assets/stylesheets/highlight/rainbow.css +114 -0
- data/default-configuration/assets/stylesheets/highlight/school_book.css +111 -0
- data/default-configuration/assets/stylesheets/highlight/school_book.png +0 -0
- data/default-configuration/assets/stylesheets/highlight/solarized_light.css +88 -0
- data/default-configuration/assets/stylesheets/highlight/sunburst.css +158 -0
- data/default-configuration/assets/stylesheets/highlight/tomorrow-night-blue.css +52 -0
- data/default-configuration/assets/stylesheets/highlight/tomorrow-night-bright.css +51 -0
- data/default-configuration/assets/stylesheets/highlight/tomorrow-night-eighties.css +51 -0
- data/default-configuration/assets/stylesheets/highlight/tomorrow-night.css +52 -0
- data/default-configuration/assets/stylesheets/highlight/tomorrow.css +49 -0
- data/default-configuration/assets/stylesheets/highlight/vs.css +86 -0
- data/default-configuration/assets/stylesheets/highlight/xcode.css +154 -0
- data/default-configuration/assets/stylesheets/highlight/zenburn.css +114 -0
- data/default-configuration/assets/stylesheets/presenter/rhet.css.sass +160 -0
- data/default-configuration/assets/stylesheets/rhet.css.sass +142 -0
- data/default-configuration/assets/themes.googleusercontent.com/static/fonts/arimo/v5/K-bXE71xZHgbUS_UdQjugvesZW2xOQ-xsNqO47m55DA.ttf +0 -0
- data/default-configuration/assets/themes.googleusercontent.com/static/fonts/cinzeldecorative/v1/pXhIVnhFtL_B9Vb1wq2F9wIh9oxuYcmvOvyh_107lQs.ttf +0 -0
- data/default-configuration/assets/themes.googleusercontent.com/static/fonts/cinzeldecorative/v1/pXhIVnhFtL_B9Vb1wq2F9zCUrkmwPfdnoTjOU_kXqBI.ttf +0 -0
- data/default-configuration/assets/themes.googleusercontent.com/static/fonts/droidsansmono/v4/ns-m2xQYezAtqh7ai59hJYW_AySPyikQrZReizgrnuw.ttf +0 -0
- data/default-configuration/assets/themes.googleusercontent.com/static/fonts/slackey/v3/bJZDrYrGx8atJRHR9DVdqg.ttf +0 -0
- data/default-configuration/common/config.yaml +17 -0
- data/default-configuration/common/templates/group.html.erb +5 -0
- data/default-configuration/common/templates/presentation.html.erb +11 -17
- data/default-configuration/common/templates/presenter-qr.html.erb +3 -3
- data/default-configuration/common/templates/slide.html.erb +3 -0
- data/default-configuration/common/templates/stylesheets.html.erb +1 -1
- data/default-configuration/presenter/templates/live-javascript.html.erb +4 -3
- data/default-configuration/presenter/templates/slide.html.erb +6 -0
- data/default-configuration/presenter/templates/stylesheets.html.erb +1 -1
- data/default-configuration/skels/config.yaml +15 -0
- data/default-configuration/skels/slides.yaml +6 -0
- data/default-configuration/viewer/templates/live-javascript.html.erb +1 -1
- data/lib/rhet-butler/arrangement-finder.rb +71 -0
- data/lib/rhet-butler/command-line.rb +69 -1
- data/lib/rhet-butler/configuration.rb +20 -5
- data/lib/rhet-butler/file-loading.rb +28 -0
- data/lib/rhet-butler/file-manager.rb +42 -22
- data/lib/rhet-butler/filter-resolver.rb +45 -0
- data/lib/rhet-butler/html-generator.rb +24 -4
- data/lib/rhet-butler/include-processor.rb +55 -0
- data/lib/rhet-butler/layout-rule.rb +17 -13
- data/lib/rhet-butler/resource-localizer.rb +22 -0
- data/lib/rhet-butler/sass-functions.rb +40 -0
- data/lib/rhet-butler/slide-arranger.rb +39 -0
- data/lib/rhet-butler/slide-group.rb +56 -21
- data/lib/rhet-butler/slide-includer.rb +5 -2
- data/lib/rhet-butler/slide-loader.rb +16 -332
- data/lib/rhet-butler/slide-processor.rb +27 -0
- data/lib/rhet-butler/slide-renderer.rb +42 -0
- data/lib/rhet-butler/slide-renderers/code.rb +19 -0
- data/lib/rhet-butler/slide-renderers/cues.rb +27 -0
- data/lib/rhet-butler/slide-renderers/textile.rb +14 -0
- data/lib/rhet-butler/slide-rendering.rb +22 -0
- data/lib/rhet-butler/slide-traverser.rb +45 -0
- data/lib/rhet-butler/slide.rb +40 -30
- data/lib/rhet-butler/stasis/css-transform.rb +55 -0
- data/lib/rhet-butler/stasis/document-transform.rb +32 -0
- data/lib/rhet-butler/stasis/html-transform.rb +51 -0
- data/lib/rhet-butler/stasis/http-loader.rb +19 -0
- data/lib/rhet-butler/stasis/identity-transform.rb +18 -0
- data/lib/rhet-butler/stasis/rack-loader.rb +57 -0
- data/lib/rhet-butler/stasis/resource-mapping.rb +55 -0
- data/lib/rhet-butler/stasis/transform-queue.rb +87 -0
- data/lib/rhet-butler/stasis/writer.rb +35 -0
- data/lib/rhet-butler/stasis.rb +18 -0
- data/lib/rhet-butler/static-generator.rb +21 -29
- data/lib/rhet-butler/web/assets-app.rb +24 -8
- data/lib/rhet-butler/web/main-app.rb +17 -8
- data/lib/rhet-butler/web/presentation-app.rb +22 -14
- data/lib/rhet-butler/web/qr-display-app.rb +4 -1
- data/lib/rhet-butler/yaml-schema.rb +5 -4
- data/lib/rhet-butler/yaml-type.rb +24 -1
- data/spec/html-generation.rb +7 -1
- data/spec/presentation-view.rb +33 -8
- data/spec/rhet-butler.rb +0 -13
- data/spec/slide-loader.rb +3 -3
- data/spec/slide-processing.rb +6 -3
- metadata +209 -119
- data/default-configuration/assets/javascript/impress.js +0 -800
- data/default-configuration/assets/stylesheets/presenter/presentation.css +0 -477
- data/lib/rhet-butler.rb +0 -2
@@ -29,8 +29,12 @@ module RhetButler
|
|
29
29
|
class MainApp
|
30
30
|
def initialize(file_manager)
|
31
31
|
@file_manager = file_manager
|
32
|
+
@capture_exceptions = true
|
32
33
|
end
|
33
34
|
|
35
|
+
attr_accessor :presentation_app_class, :assets_app_class
|
36
|
+
attr_accessor :capture_exceptions
|
37
|
+
|
34
38
|
# Notes re filesets config and slides:
|
35
39
|
# All PresentationApps need the same slides but different configs
|
36
40
|
# (including templates, etc.)
|
@@ -50,11 +54,14 @@ module RhetButler
|
|
50
54
|
@file_manager.slide_files
|
51
55
|
end
|
52
56
|
|
57
|
+
def viewer_app
|
58
|
+
@viewer_app ||= presentation_app_class.new(:viewer, @file_manager)
|
59
|
+
end
|
60
|
+
|
53
61
|
#Simply renders the bodies of the viewer and presenter apps to make sure
|
54
62
|
#there aren't any exceptions
|
55
63
|
def check
|
56
|
-
|
57
|
-
presenter_app = PresentationApp.new(:presenter, @file_manager)
|
64
|
+
presenter_app = presentation_app_class.new(:presenter, @file_manager)
|
58
65
|
viewer_app.body
|
59
66
|
presenter_app.body
|
60
67
|
#XXX static generator "populate assets" - make sure all the assets
|
@@ -68,15 +75,15 @@ module RhetButler
|
|
68
75
|
end)
|
69
76
|
end
|
70
77
|
|
71
|
-
def
|
78
|
+
def builder
|
72
79
|
sockjs_options = {
|
73
80
|
:sockjs_url => "/assets/javascript/sockjs-0.2.1.js",
|
74
81
|
:queue => SlideMessageQueue.new
|
75
82
|
}
|
76
83
|
|
77
|
-
viewer_app =
|
78
|
-
presenter_app =
|
79
|
-
assets_app =
|
84
|
+
viewer_app = self.viewer_app
|
85
|
+
presenter_app = presentation_app_class.new(:presenter, @file_manager)
|
86
|
+
assets_app = assets_app_class.new(@file_manager)
|
80
87
|
qr_app = QrDisplayApp.new(@file_manager, "/presenter")
|
81
88
|
presenter_config = presenter_app.configuration
|
82
89
|
auth_validation = build_authentication_block(presenter_config)
|
@@ -93,7 +100,9 @@ module RhetButler
|
|
93
100
|
run Rack::SockJS.new(LeaderSession, sockjs_options)
|
94
101
|
end
|
95
102
|
|
96
|
-
|
103
|
+
if @capture_exceptions
|
104
|
+
use Rack::ShowExceptions
|
105
|
+
end
|
97
106
|
|
98
107
|
map "/assets" do
|
99
108
|
run assets_app
|
@@ -129,7 +138,7 @@ module RhetButler
|
|
129
138
|
end
|
130
139
|
EM.run do
|
131
140
|
thin = Rack::Handler.get("thin")
|
132
|
-
thin.run(
|
141
|
+
thin.run(builder.to_app, :Host => "0.0.0.0", :Port => configuration.serve_port) do |server|
|
133
142
|
server.threaded = true
|
134
143
|
end
|
135
144
|
end
|
@@ -13,38 +13,46 @@ module RhetButler
|
|
13
13
|
@file_manager.aspect_config(@aspect)
|
14
14
|
end
|
15
15
|
|
16
|
+
def template_cache
|
17
|
+
::Tilt::Cache.new
|
18
|
+
end
|
19
|
+
|
16
20
|
def template_handler
|
17
|
-
@file_manager.aspect_templates(@aspect)
|
21
|
+
@file_manager.aspect_templates(@aspect, template_cache)
|
18
22
|
end
|
19
23
|
|
20
24
|
def slides_valise
|
21
25
|
@file_manager.slide_files
|
22
26
|
end
|
23
27
|
|
24
|
-
def
|
25
|
-
|
26
|
-
|
27
|
-
slide_loader = SlideLoader.new(slides_valise, configuration)
|
28
|
-
slide_loader.load_slides
|
29
|
-
end
|
28
|
+
def root_step
|
29
|
+
slide_loader = SlideLoader.new(slides_valise, configuration)
|
30
|
+
slide_loader.load_slides
|
30
31
|
end
|
31
32
|
|
32
33
|
def html_generator
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
generator.slides = slides
|
37
|
-
generator
|
38
|
-
end
|
34
|
+
generator = HTMLGenerator.new(configuration, template_handler)
|
35
|
+
generator.root_step = root_step
|
36
|
+
generator
|
39
37
|
end
|
40
38
|
|
41
39
|
def body
|
42
|
-
|
40
|
+
html_generator.render(configuration.root_slide_template)
|
43
41
|
end
|
44
42
|
|
45
43
|
def call(env)
|
46
44
|
[200, {'Content-Type' => "text/html"}, [body]]
|
47
45
|
end
|
48
46
|
end
|
47
|
+
|
48
|
+
class MemoizedPresentationApp < PresentationApp
|
49
|
+
def configuration
|
50
|
+
@configuration ||= super
|
51
|
+
end
|
52
|
+
|
53
|
+
def body
|
54
|
+
@body ||= super
|
55
|
+
end
|
56
|
+
end
|
49
57
|
end
|
50
58
|
end
|
@@ -11,6 +11,8 @@ module RhetButler
|
|
11
11
|
|
12
12
|
attr_reader :template_handler
|
13
13
|
|
14
|
+
QRItem = Struct.new(:qr, :view_url, :presenter_url)
|
15
|
+
|
14
16
|
def call(env)
|
15
17
|
url = [env["rack.url_scheme"], "://"]
|
16
18
|
if env["HTTP_HOST"].nil? or env["HTTP_HOST"].empty?
|
@@ -27,9 +29,10 @@ module RhetButler
|
|
27
29
|
qr = RQRCode::QRCode.new(url, :size => 5)
|
28
30
|
|
29
31
|
mime_type = "text/html"
|
32
|
+
qr_item = QRItem.new(qr, view_url, url)
|
30
33
|
generator = HTMLGenerator.new(@config, @templates)
|
31
34
|
[200, {'Content-Type' => mime_type}, [
|
32
|
-
generator.render("presenter-qr.html",
|
35
|
+
generator.render("presenter-qr.html", qr_item)
|
33
36
|
]]
|
34
37
|
end
|
35
38
|
end
|
@@ -1,9 +1,10 @@
|
|
1
|
+
require 'yaml'
|
1
2
|
require 'rhet-butler/slide'
|
2
3
|
require 'rhet-butler/slide-group'
|
3
4
|
require 'rhet-butler/slide-includer'
|
4
5
|
require 'rhet-butler/layout-rule'
|
5
6
|
|
6
|
-
YAML.add_tag('!slide', RhetButler::Slide)
|
7
|
-
YAML.add_tag('!group', RhetButler::SlideGroup)
|
8
|
-
YAML.add_tag('!include', RhetButler::Includer)
|
9
|
-
YAML.add_tag('!layout-rule', RhetButler::LayoutRule)
|
7
|
+
#YAML.add_tag('!slide', RhetButler::Slide)
|
8
|
+
#YAML.add_tag('!group', RhetButler::SlideGroup)
|
9
|
+
#YAML.add_tag('!include', RhetButler::Includer)
|
10
|
+
#YAML.add_tag('!layout-rule', RhetButler::LayoutRule)
|
@@ -1,5 +1,14 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
1
3
|
module RhetButler
|
2
|
-
|
4
|
+
class YamlType
|
5
|
+
def self.register(name)
|
6
|
+
YAML.add_tag("!#{name}", self)
|
7
|
+
end
|
8
|
+
|
9
|
+
def setup_defaults
|
10
|
+
end
|
11
|
+
|
3
12
|
def check_config_hash(config_hash)
|
4
13
|
expected_keys = self.class.required_config + self.class.optional_config
|
5
14
|
weird_keys = config_hash.keys.find_all{|key| !expected_keys.include?(key)}
|
@@ -19,5 +28,19 @@ module RhetButler
|
|
19
28
|
yield(@config_hash[name])
|
20
29
|
end
|
21
30
|
end
|
31
|
+
|
32
|
+
def initialize
|
33
|
+
setup_defaults
|
34
|
+
end
|
35
|
+
|
36
|
+
def init_with(coder)
|
37
|
+
setup_defaults
|
38
|
+
|
39
|
+
@config_hash = normalize_config(coder)
|
40
|
+
|
41
|
+
check_config_hash(@config_hash)
|
42
|
+
|
43
|
+
configure
|
44
|
+
end
|
22
45
|
end
|
23
46
|
end
|
data/spec/html-generation.rb
CHANGED
@@ -10,6 +10,12 @@ describe RhetButler::HTMLGenerator do
|
|
10
10
|
[ one ]
|
11
11
|
end
|
12
12
|
|
13
|
+
let :prez do
|
14
|
+
RhetButler::SlideGroup.new.tap do |prez|
|
15
|
+
prez.slides = slides
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
13
19
|
let :files do
|
14
20
|
manager = RhetButler::FileManager.new
|
15
21
|
end
|
@@ -24,7 +30,7 @@ describe RhetButler::HTMLGenerator do
|
|
24
30
|
|
25
31
|
let :generator do
|
26
32
|
described_class.new(configuration, template_handler).tap do |gen|
|
27
|
-
gen.
|
33
|
+
gen.root_step = prez
|
28
34
|
end
|
29
35
|
end
|
30
36
|
|
data/spec/presentation-view.rb
CHANGED
@@ -8,11 +8,14 @@ describe RhetButler::Web::MainApp do
|
|
8
8
|
include Rack::Test::Methods
|
9
9
|
|
10
10
|
let :files do
|
11
|
-
RhetButler::FileManager.new
|
11
|
+
RhetButler::FileManager.new("sources" => %w{ spec_support/fixtures/project })
|
12
12
|
end
|
13
13
|
|
14
14
|
let :app do
|
15
|
-
described_class.new(files)
|
15
|
+
main = described_class.new(files)
|
16
|
+
main.presentation_app_class = RhetButler::Web::MemoizedPresentationApp
|
17
|
+
main.assets_app_class = RhetButler::Web::MemoizedAssetsApp
|
18
|
+
main.builder.to_app
|
16
19
|
end
|
17
20
|
|
18
21
|
describe "/" do
|
@@ -26,13 +29,23 @@ describe RhetButler::Web::MainApp do
|
|
26
29
|
|
27
30
|
it "should have a script tag for impress.js" do
|
28
31
|
doc = Nokogiri::HTML(last_response.body)
|
29
|
-
doc.xpath("//script[contains(@src, '
|
32
|
+
doc.xpath("//script[contains(@src, 'rhet-present.js')]").should_not be_empty
|
30
33
|
end
|
31
34
|
end
|
32
35
|
|
33
|
-
describe "/
|
36
|
+
describe "/qr" do
|
34
37
|
before :each do
|
35
|
-
get "/
|
38
|
+
get "/qr"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should serve a presentation" do
|
42
|
+
last_response.should be_ok
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "/javascript/rhet-present.js" do
|
47
|
+
before :each do
|
48
|
+
get "/javascript/rhet-present.js"
|
36
49
|
end
|
37
50
|
|
38
51
|
it "should serve the javascript" do
|
@@ -42,12 +55,11 @@ describe RhetButler::Web::MainApp do
|
|
42
55
|
it "should serve as application/javascript" do
|
43
56
|
last_response.headers["Content-Type"].should == "application/javascript"
|
44
57
|
end
|
45
|
-
|
46
58
|
end
|
47
59
|
|
48
|
-
describe "/assets/javascript/
|
60
|
+
describe "/assets/javascript/rhet-present.js" do
|
49
61
|
before :each do
|
50
|
-
get "/assets/javascript/
|
62
|
+
get "/assets/javascript/rhet-present.js"
|
51
63
|
end
|
52
64
|
|
53
65
|
it "should serve the javascript" do
|
@@ -57,7 +69,20 @@ describe RhetButler::Web::MainApp do
|
|
57
69
|
it "should serve as application/javascript" do
|
58
70
|
last_response.headers["Content-Type"].should == "application/javascript"
|
59
71
|
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "/stylesheets/test.css" do
|
75
|
+
before :each do
|
76
|
+
get "/stylesheets/test.css"
|
77
|
+
end
|
60
78
|
|
79
|
+
it "should serve the CSS" do
|
80
|
+
last_response.should be_ok
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should serve as text/css" do
|
84
|
+
last_response.headers["Content-Type"].should == "text/css"
|
85
|
+
end
|
61
86
|
end
|
62
87
|
|
63
88
|
|
data/spec/rhet-butler.rb
CHANGED
@@ -2,19 +2,6 @@ require 'rhet-butler'
|
|
2
2
|
|
3
3
|
describe RhetButler do
|
4
4
|
describe "web server" do
|
5
|
-
describe "presentation view" do
|
6
|
-
it "should serve a presentation"
|
7
|
-
|
8
|
-
it "should include impress.js"
|
9
|
-
|
10
|
-
it "should have get WebSocket commands to sync with presenter"
|
11
|
-
|
12
|
-
it "should be able to split from presenter"
|
13
|
-
|
14
|
-
it "should be able to resync with presenter"
|
15
|
-
|
16
|
-
it "should have a resource for the current presenter's slide"
|
17
|
-
end
|
18
5
|
|
19
6
|
describe "passive view" do
|
20
7
|
it "should serve the presentation"
|
data/spec/slide-loader.rb
CHANGED
@@ -28,17 +28,17 @@ describe RhetButler::SlideLoader do
|
|
28
28
|
|
29
29
|
it "should parse YAML for the configs" do
|
30
30
|
slides.should have_at_least(1).slides
|
31
|
-
slides.should be_all{|slide| RhetButler::Slide === slide}
|
31
|
+
slides.should be_all{|slide| RhetButler::Slide === slide or RhetButler::SlideGroup === slide }
|
32
32
|
end
|
33
33
|
|
34
34
|
it "should have the included slide" do
|
35
35
|
slides.find do |slide|
|
36
|
-
slide.content =~ /included/
|
36
|
+
slide.content =~ /included/ if slide.respond_to? :content
|
37
37
|
end.should_not be_nil
|
38
38
|
end
|
39
39
|
|
40
40
|
it "should have the slide group" do
|
41
|
-
slides.find do |slide|
|
41
|
+
slides.each_slide.find do |slide|
|
42
42
|
slide.content =~ /grouped/
|
43
43
|
end.should_not be_nil
|
44
44
|
end
|
data/spec/slide-processing.rb
CHANGED
@@ -4,6 +4,8 @@ describe RhetButler::SlideProcessor do
|
|
4
4
|
def slide(content)
|
5
5
|
slide = RhetButler::Slide.new
|
6
6
|
slide.content = content
|
7
|
+
slide.content_filters = default_content_filters
|
8
|
+
slide.note_filters = default_content_filters
|
7
9
|
slide
|
8
10
|
end
|
9
11
|
|
@@ -37,15 +39,16 @@ describe RhetButler::SlideProcessor do
|
|
37
39
|
]
|
38
40
|
end
|
39
41
|
|
40
|
-
let :
|
41
|
-
|
42
|
+
let :default_content_filters do
|
43
|
+
[RhetButler::SlideRenderers::Textile.new]
|
42
44
|
end
|
43
45
|
|
44
46
|
let :processor do
|
45
47
|
processor = RhetButler::SlideProcessor.new
|
46
48
|
processor.root_group = root_group
|
47
49
|
processor.blueprint = blueprint
|
48
|
-
processor.
|
50
|
+
processor.default_content_filters = default_content_filters
|
51
|
+
processor.default_note_filters = default_content_filters
|
49
52
|
processor
|
50
53
|
end
|
51
54
|
|