reveal-ck 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/bin/reveal-ck +18 -12
- data/lib/reveal-ck.rb +3 -10
- data/lib/reveal-ck/builders.rb +4 -0
- data/lib/reveal-ck/builders/build_task.rb +21 -0
- data/lib/reveal-ck/builders/builder.rb +27 -0
- data/lib/reveal-ck/builders/index_html.rb +85 -0
- data/lib/reveal-ck/builders/packaged_slides.rb +84 -0
- data/lib/reveal-ck/changers.rb +3 -0
- data/lib/reveal-ck/changers/slicer.rb +25 -0
- data/lib/reveal-ck/changers/splicer.rb +37 -0
- data/lib/reveal-ck/changers/string_replacer.rb +18 -0
- data/lib/reveal-ck/config.rb +51 -23
- data/lib/reveal-ck/presentation.rb +24 -15
- data/lib/reveal-ck/presentation_dsl.rb +20 -12
- data/lib/reveal-ck/slide.rb +3 -3
- data/lib/reveal-ck/templates.rb +3 -0
- data/lib/reveal-ck/templates/finder.rb +35 -0
- data/lib/reveal-ck/templates/processor.rb +32 -0
- data/lib/reveal-ck/templates/render_scope.rb +14 -0
- data/lib/reveal-ck/version.rb +1 -1
- data/rakelib/examples.rake +7 -0
- data/spec/data/{slicer → changers/slicer}/after_remove +0 -0
- data/spec/data/{slicer → changers/slicer}/before_remove +0 -0
- data/spec/data/{splicer → changers/splicer}/abcd +0 -0
- data/spec/data/{splicer → changers/splicer}/after_insert +0 -0
- data/spec/data/{splicer → changers/splicer}/before_insert +0 -0
- data/spec/data/{string_replacer → changers/string_replacer}/after_replace +0 -0
- data/spec/data/{string_replacer → changers/string_replacer}/before_replace +0 -0
- data/spec/data/config/full_config.toml +7 -0
- data/spec/data/config/partial_config.toml +1 -0
- data/spec/data/presentation/slides.haml +2 -0
- data/spec/data/presentation/slides.rb +5 -0
- data/spec/data/{dsl/slides.rb → presentation_dsl/dsl.rb} +4 -0
- data/spec/data/templates/finder/code/function.rb +3 -0
- data/spec/data/{template_finder/automated/automated.slim → templates/finder/quotes/create} +0 -0
- data/spec/data/{template_finder/automated/common.haml → templates/finder/templates/template_one.slim} +0 -0
- data/spec/data/{template_finder/custom/common.haml → templates/finder/templates/template_two.slim} +0 -0
- data/spec/data/{template_finder/custom/custom.slim → templates/finder/templates/text.slim} +0 -0
- data/spec/data/{haml → templates/processor}/basic.haml +0 -0
- data/spec/data/{slim → templates/processor}/basic.slim +0 -0
- data/spec/data/templates/render_scope/quote +2 -0
- data/spec/examples/programmatic_slides_spec.rb +12 -0
- data/spec/examples/slide_output_spec.rb +12 -0
- data/spec/lib/reveal-ck/builders/builder_spec.rb +39 -0
- data/spec/lib/reveal-ck/builders/packaged_slides_spec.rb +39 -0
- data/spec/lib/reveal-ck/changers/slicer_spec.rb +46 -0
- data/spec/lib/reveal-ck/changers/splicer_spec.rb +45 -0
- data/spec/lib/reveal-ck/changers/string_replacer_spec.rb +35 -0
- data/spec/lib/reveal-ck/config_spec.rb +68 -20
- data/spec/lib/reveal-ck/presentation_dsl_spec.rb +21 -11
- data/spec/lib/reveal-ck/presentation_spec.rb +40 -38
- data/spec/lib/reveal-ck/slide_spec.rb +3 -3
- data/spec/lib/reveal-ck/templates/finder_spec.rb +88 -0
- data/spec/lib/reveal-ck/templates/processor_spec.rb +31 -0
- data/spec/lib/reveal-ck/templates/render_scope_spec.rb +24 -0
- data/templates/{title.slim → intro.slim} +0 -0
- metadata +77 -71
- data/lib/reveal-ck/build_task.rb +0 -19
- data/lib/reveal-ck/builder.rb +0 -25
- data/lib/reveal-ck/file_slicer.rb +0 -23
- data/lib/reveal-ck/file_splicer.rb +0 -36
- data/lib/reveal-ck/file_string_replacer.rb +0 -16
- data/lib/reveal-ck/presentation_builder.rb +0 -94
- data/lib/reveal-ck/slide_builder.rb +0 -81
- data/lib/reveal-ck/slides_html_builder.rb +0 -39
- data/lib/reveal-ck/template_finder.rb +0 -33
- data/lib/reveal-ck/template_processor.rb +0 -28
- data/spec/data/config/config.toml +0 -6
- data/spec/data/html/converted_basic_haml.html +0 -10
- data/spec/data/html/converted_basic_slim.html +0 -10
- data/spec/data/html/reveal-js-index.html +0 -375
- data/spec/data/slides_html_builder/slides.haml +0 -3
- data/spec/data/slides_html_builder/slides.rb +0 -14
- data/spec/data/slides_html_builder/slides.slim +0 -2
- data/spec/lib/reveal-ck/builder_spec.rb +0 -37
- data/spec/lib/reveal-ck/file_slicer_spec.rb +0 -44
- data/spec/lib/reveal-ck/file_splicer_spec.rb +0 -43
- data/spec/lib/reveal-ck/file_string_replacer_spec.rb +0 -34
- data/spec/lib/reveal-ck/presentation_builder_spec.rb +0 -37
- data/spec/lib/reveal-ck/slides_html_builder_spec.rb +0 -102
- data/spec/lib/reveal-ck/template_finder_spec.rb +0 -87
- data/spec/lib/reveal-ck/template_processor_spec.rb +0 -29
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NmVmNmUyNjhkZjI2MjM3ODBhZTQ2MzJhMDY1YTYyZWM3NjE3ZjFjOA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NDdlZGYyMGRjZmMxYTliMTY3ODg0MmZlZWY3YzQ4MGY3Y2U3ZWE2OQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZTQ4MjA3M2U3ZDQ0MWJhMWZiOGI2NTA1ZDJmY2M0ZTczYmQ5MDE1MThmMDZj
|
10
|
+
ZmU2YThkOTM4YzE4YmQzNDgzNzZhMDVkYTQ4ZDRiMjQ0MGNmZDY0NzM2MTFk
|
11
|
+
Y2M4NjIwYTAzNTEwODBkMjU4YTJlNWJjNzFkZGFhZjZiODc1MTM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZjcwODAyYzA3ZWQ5MGVlMzEzYmI0MmRhMjlmYmY5ZDYxZjcyZjhkZDQ0OWEy
|
14
|
+
MmMxNzhjYTUzNjk2N2IwZWI0MTYwYzkwZjQ5MjZkMDgzNDU1OWFhZDIwMzRm
|
15
|
+
NTFmM2FkNmZmYWIyZTc3MzRiMWIwMGE5NGMyZGM3NjFiNzRlNDg=
|
data/bin/reveal-ck
CHANGED
@@ -10,28 +10,34 @@ version RevealCK::VERSION
|
|
10
10
|
|
11
11
|
desc 'Generate reveal.js slides'
|
12
12
|
command :generate do |c|
|
13
|
+
|
14
|
+
# Where is the slides file?
|
15
|
+
default_file = 'slides.haml' if File.exists? 'slides.haml'
|
16
|
+
default_file = 'slides.slim' if File.exists? 'slides.slim'
|
17
|
+
default_file = 'slides.rb' if File.exists? 'slides.rb'
|
18
|
+
c.desc 'The file containing your slides'
|
19
|
+
c.flag [:f, :file], default_value: default_file
|
20
|
+
|
13
21
|
c.action do |global_options,options,args|
|
22
|
+
slides_file = options[:file]
|
14
23
|
|
15
24
|
require 'rake' # for FileList
|
16
|
-
|
17
25
|
image_files = FileList["images/**/*"]
|
18
26
|
|
19
27
|
output_dir = 'slides'
|
20
28
|
|
21
|
-
|
22
|
-
slides_file = 'slides.slim' if File.exists? 'slides.slim'
|
23
|
-
slides_file = 'slides.rb' if File.exists? 'slides.rb'
|
29
|
+
presentation = RevealCK::Presentation.load slides_file
|
24
30
|
|
25
|
-
|
31
|
+
if File.exists? 'config.toml'
|
32
|
+
presentation.merge_config file: 'config.toml'
|
33
|
+
end
|
26
34
|
|
27
|
-
builder = RevealCK::
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
})
|
35
|
+
builder = RevealCK::Builders::PackagedSlides.new({
|
36
|
+
image_files: image_files,
|
37
|
+
output_dir: output_dir,
|
38
|
+
presentation: presentation
|
39
|
+
})
|
33
40
|
builder.build!
|
34
|
-
|
35
41
|
end
|
36
42
|
end
|
37
43
|
|
data/lib/reveal-ck.rb
CHANGED
@@ -1,18 +1,11 @@
|
|
1
1
|
require_relative 'reveal-ck/version'
|
2
2
|
require_relative 'reveal-ck/config'
|
3
|
-
require_relative 'reveal-ck/file_string_replacer'
|
4
|
-
require_relative 'reveal-ck/file_slicer'
|
5
|
-
require_relative 'reveal-ck/file_splicer'
|
6
|
-
require_relative 'reveal-ck/template_finder'
|
7
|
-
require_relative 'reveal-ck/template_processor'
|
8
3
|
require_relative 'reveal-ck/slide'
|
9
4
|
require_relative 'reveal-ck/presentation'
|
10
|
-
require_relative 'reveal-ck/build_task'
|
11
|
-
require_relative 'reveal-ck/builder'
|
12
|
-
require_relative 'reveal-ck/slides_html_builder'
|
13
|
-
require_relative 'reveal-ck/slide_builder'
|
14
|
-
require_relative 'reveal-ck/presentation_builder'
|
15
5
|
require_relative 'reveal-ck/presentation_dsl'
|
6
|
+
require_relative 'reveal-ck/templates'
|
7
|
+
require_relative 'reveal-ck/changers'
|
8
|
+
require_relative 'reveal-ck/builders'
|
16
9
|
|
17
10
|
# RevealCK::LOCATION is the path where reveal-ck is residing on your
|
18
11
|
# system as a gem.
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module RevealCK
|
2
|
+
module Builders
|
3
|
+
#
|
4
|
+
# Public: A BuildTask couple a written description (in the form of a
|
5
|
+
# string) with an action in (the form of a proc). It executes the
|
6
|
+
# proc on demand via go!
|
7
|
+
#
|
8
|
+
class BuildTask
|
9
|
+
|
10
|
+
def initialize(description, action)
|
11
|
+
@description = description
|
12
|
+
@action = action
|
13
|
+
end
|
14
|
+
|
15
|
+
def go
|
16
|
+
@action.call
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module RevealCK
|
2
|
+
module Builders
|
3
|
+
#
|
4
|
+
# Public: A Builder knows how to execute BuildTasks. These are added
|
5
|
+
# via add_task, and executed via build!
|
6
|
+
#
|
7
|
+
# It is expected to be subclassed, and the subclass must override
|
8
|
+
# register_tasks.
|
9
|
+
#
|
10
|
+
class Builder
|
11
|
+
|
12
|
+
def register_tasks
|
13
|
+
raise 'Subclasses must implement register_tasks'
|
14
|
+
end
|
15
|
+
|
16
|
+
def add_task(description, &action)
|
17
|
+
@tasks << BuildTask.new(description, action)
|
18
|
+
end
|
19
|
+
|
20
|
+
def build!
|
21
|
+
register_tasks unless @tasks
|
22
|
+
@tasks.each { |task| task.go }
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
module RevealCK
|
2
|
+
module Builders
|
3
|
+
#
|
4
|
+
# Public: An IndexHtml knows how to build the index.html file (the
|
5
|
+
# core slides) within a reveal.js presentation.
|
6
|
+
#
|
7
|
+
class IndexHtml < Builder
|
8
|
+
|
9
|
+
attr_reader :user_slides, :reveal_slides
|
10
|
+
|
11
|
+
attr_reader :tasks
|
12
|
+
|
13
|
+
attr_reader :config
|
14
|
+
|
15
|
+
def initialize(args)
|
16
|
+
@user_slides = args[:user_slides]
|
17
|
+
@reveal_slides = args[:reveal_slides]
|
18
|
+
@config = args[:config]
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def register_tasks
|
24
|
+
|
25
|
+
@tasks = []
|
26
|
+
|
27
|
+
remove_default_content reveal_slides
|
28
|
+
add_user_content reveal_slides, user_slides
|
29
|
+
replace_title reveal_slides, config.title
|
30
|
+
replace_author reveal_slides, config.author
|
31
|
+
replace_theme reveal_slides, config.theme
|
32
|
+
replace_transition reveal_slides, config.transition
|
33
|
+
end
|
34
|
+
|
35
|
+
def remove_default_content(file)
|
36
|
+
add_task 'Slicing out reveal.js default slides' do
|
37
|
+
begin_line_num = 38 # Line where I see <div class="slides">
|
38
|
+
end_line_num = 346 # Closing <div>
|
39
|
+
default_slides = begin_line_num..end_line_num
|
40
|
+
Changers::Slicer.remove! file, default_slides
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def add_user_content(file, user_slides)
|
45
|
+
add_task "Splicing in slides from #{user_slides}" do
|
46
|
+
Changers::Splicer.insert!(user_slides,
|
47
|
+
into: file,
|
48
|
+
after: '<div class="slides">')
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def replace_title(file, title)
|
53
|
+
old = 'reveal.js - The HTML Presentation Framework'
|
54
|
+
new = title
|
55
|
+
add_task 'Replacing the <title>' do
|
56
|
+
Changers::StringReplacer.replace! file, old: old, new: new
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def replace_author(file, author)
|
61
|
+
old = 'name="author" content="Hakim El Hattab"'
|
62
|
+
new = 'name="author" content="' + author + '"'
|
63
|
+
add_task "Replacing the <meta name='author'>" do
|
64
|
+
Changers::StringReplacer.replace! file, old: old, new: new
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def replace_theme(file, theme)
|
69
|
+
old = 'href="css/theme/default.css" id="theme"'
|
70
|
+
new = 'href="css/theme/' + theme + '.css" id="theme"'
|
71
|
+
add_task 'Replacing the core theme' do
|
72
|
+
Changers::StringReplacer.replace! file, old: old, new: new
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def replace_transition(file, transition)
|
77
|
+
old = "Reveal.getQueryHash().transition || 'default'"
|
78
|
+
new = "Reveal.getQueryHash().transition || '#{transition}'"
|
79
|
+
add_task 'Replacing the core transition' do
|
80
|
+
Changers::StringReplacer.replace! file, old: old, new: new
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module RevealCK
|
4
|
+
module Builders
|
5
|
+
#
|
6
|
+
# Public: A PackagedSlides knows how to bundle together all of the
|
7
|
+
# various files that makeup a reveal.js presentation.
|
8
|
+
#
|
9
|
+
class PackagedSlides < Builder
|
10
|
+
|
11
|
+
attr_reader :image_files, :tasks
|
12
|
+
|
13
|
+
def initialize(args)
|
14
|
+
@presentation =
|
15
|
+
args[:presentation] || raise(':presentation is required')
|
16
|
+
@image_files = args[:image_files]
|
17
|
+
@output_dir = args[:output_dir]
|
18
|
+
end
|
19
|
+
|
20
|
+
def output_dir(child = nil)
|
21
|
+
if child
|
22
|
+
File.join(@output_dir, child)
|
23
|
+
else
|
24
|
+
@output_dir
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def register_tasks
|
31
|
+
@tasks = []
|
32
|
+
slides_html = output_dir 'slides.html'
|
33
|
+
create_dir output_dir
|
34
|
+
write_slides_html @presentation, slides_html
|
35
|
+
bundle_revealjs output_dir
|
36
|
+
bundle_image_files image_files, output_dir('images')
|
37
|
+
create_index_html slides_html, output_dir('index.html'), @presentation
|
38
|
+
end
|
39
|
+
|
40
|
+
def create_dir(dir)
|
41
|
+
add_task "Ensuring #{dir}/ exists" do
|
42
|
+
FileUtils.mkdir_p dir, verbose: false
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def write_slides_html(presentation, slides_html)
|
47
|
+
add_task "Writing Presentation to '#{slides_html}'" do
|
48
|
+
File.open(slides_html, 'w') { |file| file << presentation.html }
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def bundle_revealjs(output_dir)
|
53
|
+
add_task "Bundling up the revealjs stuff into #{output_dir}/" do
|
54
|
+
FileUtils.cp_r(RevealCK::REVEALJS_FILES,
|
55
|
+
output_dir,
|
56
|
+
verbose: false)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def bundle_image_files(image_files, image_output_dir)
|
61
|
+
if image_files
|
62
|
+
add_task "Copying in images into '#{image_output_dir}'" do
|
63
|
+
FileUtils.mkdir_p(image_output_dir, verbose: false)
|
64
|
+
FileUtils.cp_r(image_files,
|
65
|
+
image_output_dir,
|
66
|
+
verbose: false)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def create_index_html(slides_html, index_html, config)
|
72
|
+
add_task 'Creating slides/index.html' do
|
73
|
+
slide_builder =
|
74
|
+
IndexHtml.new({
|
75
|
+
user_slides: slides_html,
|
76
|
+
reveal_slides: index_html,
|
77
|
+
config: config
|
78
|
+
})
|
79
|
+
slide_builder.build!
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module RevealCK
|
2
|
+
module Changers
|
3
|
+
#
|
4
|
+
# Public: A Slicer knows how to remove a section of a file.
|
5
|
+
#
|
6
|
+
class Slicer
|
7
|
+
|
8
|
+
def self.remove!(slice_file, range)
|
9
|
+
lines = File.open(slice_file).readlines
|
10
|
+
slicer = Slicer.new lines
|
11
|
+
sliced_lines = slicer.remove range
|
12
|
+
File.open(slice_file, 'w') { |file| file << sliced_lines.join }
|
13
|
+
end
|
14
|
+
|
15
|
+
def initialize(lines)
|
16
|
+
@lines = lines
|
17
|
+
end
|
18
|
+
|
19
|
+
def remove(range)
|
20
|
+
@lines.select.with_index { |line, index| ! range.cover? index }
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module RevealCK
|
2
|
+
module Changers
|
3
|
+
#
|
4
|
+
# Public: A Splicer knows how to insert a list of lines into a file.
|
5
|
+
#
|
6
|
+
class Splicer
|
7
|
+
|
8
|
+
def initialize(lines)
|
9
|
+
@lines = lines
|
10
|
+
end
|
11
|
+
|
12
|
+
def insert(new_lines, opts)
|
13
|
+
index = @lines.each.with_index do |line, i|
|
14
|
+
break i + 1 if line.include? opts[:after]
|
15
|
+
end
|
16
|
+
@lines.insert(index, new_lines).flatten
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.insert!(to_insert, opts)
|
20
|
+
to_insert_lines = readlines to_insert
|
21
|
+
insert_into_file = opts[:into]
|
22
|
+
insert_into_lines = readlines insert_into_file
|
23
|
+
|
24
|
+
splicer = Splicer.new insert_into_lines
|
25
|
+
spliced_lines = splicer.insert to_insert_lines, after: opts[:after]
|
26
|
+
File.open(insert_into_file, 'w') { |file| file << spliced_lines.join }
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def self.readlines(file)
|
32
|
+
File.open(file).readlines
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module RevealCK
|
2
|
+
module Changers
|
3
|
+
#
|
4
|
+
# Public: A StringReplacer knows how to replace one string in a file
|
5
|
+
# with another.
|
6
|
+
#
|
7
|
+
class StringReplacer
|
8
|
+
|
9
|
+
def self.replace!(file, args)
|
10
|
+
old, new = args[:old], args[:new]
|
11
|
+
lines = File.open(file).read
|
12
|
+
lines = lines.sub old, new
|
13
|
+
File.open(file, 'w') { |file| file << lines }
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/reveal-ck/config.rb
CHANGED
@@ -2,47 +2,75 @@ require 'toml'
|
|
2
2
|
|
3
3
|
module RevealCK
|
4
4
|
#
|
5
|
-
# Public:
|
6
|
-
# RevealCK Presentation: title, author, theme,
|
7
|
-
# sensible defaults, and it can read these from a toml file.
|
5
|
+
# Public: The Config module supports the core metadata surrounding a
|
6
|
+
# RevealCK Presentation: title, author, theme, and transition.
|
8
7
|
#
|
9
|
-
|
8
|
+
module Config
|
10
9
|
|
11
|
-
def
|
12
|
-
|
13
|
-
|
10
|
+
def author
|
11
|
+
@author || DEFAULTS['author']
|
12
|
+
end
|
13
|
+
|
14
|
+
def author=(author)
|
15
|
+
@author = author
|
14
16
|
end
|
15
17
|
|
16
18
|
def title
|
17
|
-
@
|
19
|
+
@title || DEFAULTS['title']
|
18
20
|
end
|
19
21
|
|
20
|
-
def
|
21
|
-
@
|
22
|
+
def title=(title)
|
23
|
+
@title = title
|
22
24
|
end
|
23
25
|
|
24
26
|
def theme
|
25
|
-
@
|
27
|
+
@theme || DEFAULTS['theme']
|
26
28
|
end
|
27
29
|
|
28
|
-
|
30
|
+
def theme=(theme)
|
31
|
+
@theme = theme
|
32
|
+
end
|
33
|
+
|
34
|
+
def transition
|
35
|
+
@transition || DEFAULTS['transition']
|
36
|
+
end
|
37
|
+
|
38
|
+
def transition=(transition)
|
39
|
+
@transition = transition
|
40
|
+
end
|
29
41
|
|
30
42
|
DEFAULTS = {
|
31
|
-
'title'
|
32
|
-
'author'
|
33
|
-
'
|
34
|
-
|
35
|
-
}
|
43
|
+
'title' => 'Slides',
|
44
|
+
'author' => '',
|
45
|
+
'theme' => 'default',
|
46
|
+
'transition' => 'default'
|
36
47
|
}
|
37
48
|
|
38
|
-
def
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
49
|
+
def merge_config(args)
|
50
|
+
file = args[:file] || raise(':file is required')
|
51
|
+
config = TOML.load_file file
|
52
|
+
|
53
|
+
if config['author']
|
54
|
+
@author = config['author'] unless @author
|
55
|
+
end
|
56
|
+
|
57
|
+
if config['title']
|
58
|
+
@title = config['title'] unless @title
|
59
|
+
end
|
60
|
+
|
61
|
+
if config['presentation']
|
62
|
+
presentation = config['presentation']
|
63
|
+
if presentation['theme']
|
64
|
+
@theme = presentation['theme'] unless @theme
|
65
|
+
end
|
66
|
+
|
67
|
+
if presentation['transition']
|
68
|
+
@transition = presentation['transition'] unless @transition
|
69
|
+
end
|
43
70
|
end
|
44
|
-
|
71
|
+
|
45
72
|
end
|
46
73
|
|
47
74
|
end
|
75
|
+
|
48
76
|
end
|