n3bulous-infuse 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +88 -0
- data/Rakefile +41 -0
- data/bin/infuse +47 -0
- data/lib/infuse/infuse_dsl.rb +66 -0
- data/lib/infuse/slide.rb +15 -0
- data/lib/infuse/themes/plain/css/custom.css +39 -0
- data/lib/infuse/themes/plain/footer.html.erb +8 -0
- data/lib/infuse/themes/plain/header.html.erb +45 -0
- data/lib/infuse/themes/plain/slide.html.erb +11 -0
- data/lib/infuse/themes/plain/title-page.html.erb +0 -0
- data/lib/infuse/version.rb +13 -0
- data/lib/infuse.rb +11 -0
- data/lib/s6/README.textile +42 -0
- data/lib/s6/blank.css +31 -0
- data/lib/s6/blank.html +93 -0
- data/lib/s6/blank.svg +62 -0
- data/lib/s6/shared/jquery.js +4241 -0
- data/lib/s6/shared/outline.css +27 -0
- data/lib/s6/shared/print.css +1 -0
- data/lib/s6/shared/slides.core.js +285 -0
- data/lib/s6/shared/slides.css +76 -0
- data/lib/s6/shared/slides.js +41 -0
- data/test/test_helper.rb +9 -0
- data/test/unit/infuse_test.rb +13 -0
- metadata +85 -0
data/README.textile
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
h1. Infuse
|
2
|
+
|
3
|
+
h2. Description
|
4
|
+
|
5
|
+
Create HTML slide shows with a simple DSL.
|
6
|
+
|
7
|
+
h2. Installation
|
8
|
+
|
9
|
+
<pre>
|
10
|
+
sudo gem install n3bulous-infuse --source=http://gems.github.com
|
11
|
+
</pre>
|
12
|
+
|
13
|
+
h2. Usage
|
14
|
+
|
15
|
+
<pre>
|
16
|
+
infuse presentation.infuse
|
17
|
+
</pre>
|
18
|
+
|
19
|
+
The above command will:
|
20
|
+
|
21
|
+
* Parse your slide show file.
|
22
|
+
* Create a directory named "presentation" if it doesn't already exist.
|
23
|
+
* Populate the directory with default files (the first time.)
|
24
|
+
* Convert your slide show markup to an HTML file.
|
25
|
+
|
26
|
+
h2. Example
|
27
|
+
|
28
|
+
<pre>
|
29
|
+
title "Gitting Jiggy with Git"
|
30
|
+
subtitle "Managing Documents with a Source Code Management System"
|
31
|
+
author "Kevin McFadden"
|
32
|
+
company "Concepts Ahead"
|
33
|
+
copyright "2009 Kevin McFadden"
|
34
|
+
background ""
|
35
|
+
|
36
|
+
slide "Who is this Guy?", <<_EOS
|
37
|
+
* Name: Kevin McFadden
|
38
|
+
* Current: Concepts Ahead
|
39
|
+
* Past: Director of Technology @ Viget Labs IN D.C.
|
40
|
+
* Other projects found on "Github":https://github.com/n3bulous/.
|
41
|
+
_EOS
|
42
|
+
</pre>
|
43
|
+
|
44
|
+
h2. Future
|
45
|
+
|
46
|
+
* Add cli help and options
|
47
|
+
* Support external resources (images, ...)
|
48
|
+
* Figure out why my redcloth dependency check fails.
|
49
|
+
* Support TextMate
|
50
|
+
* Support Rakefile
|
51
|
+
* Support Markdown
|
52
|
+
* Custom theme support
|
53
|
+
* Code formatting
|
54
|
+
* Animated transitions
|
55
|
+
* Let me know, or contribute!
|
56
|
+
|
57
|
+
h2. Useful Info
|
58
|
+
|
59
|
+
* You can use "iRed Light":http://www.filewell.com/iRedLite/ to control any application. In this case, assign the up and down cursor keys to your preferred buttons.
|
60
|
+
|
61
|
+
h2. Inspiration
|
62
|
+
|
63
|
+
Infuse was born out of getting caught up in the look of slide show presentations with Keynote, and out of the frustration of "codex's":http://github.com/pragdave/codex complicated process.
|
64
|
+
|
65
|
+
h2. License
|
66
|
+
|
67
|
+
Copyright © 2009 Kevin McFadden, Concepts Ahead
|
68
|
+
|
69
|
+
Permission is hereby granted, free of charge, to any person
|
70
|
+
obtaining a copy of this software and associated documentation
|
71
|
+
files (the "Software"), to deal in the Software without
|
72
|
+
restriction, including without limitation the rights to use,
|
73
|
+
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
74
|
+
copies of the Software, and to permit persons to whom the
|
75
|
+
Software is furnished to do so, subject to the following
|
76
|
+
conditions:
|
77
|
+
|
78
|
+
The above copyright notice and this permission notice shall be
|
79
|
+
included in all copies or substantial portions of the Software.
|
80
|
+
|
81
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
82
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
83
|
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
84
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
85
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
86
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
87
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
88
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake/gempackagetask'
|
3
|
+
require 'rake/testtask'
|
4
|
+
|
5
|
+
require 'lib/infuse/version'
|
6
|
+
|
7
|
+
task :default => :test
|
8
|
+
|
9
|
+
spec = Gem::Specification.new do |s|
|
10
|
+
s.name = 'infuse'
|
11
|
+
s.version = Infuse::Version.to_s
|
12
|
+
s.has_rdoc = true
|
13
|
+
s.extra_rdoc_files = %w(README.textile)
|
14
|
+
s.rdoc_options = %w(--main README.textile)
|
15
|
+
s.summary = "Create HTML slide shows with a simple DSL!"
|
16
|
+
s.author = 'Kevin McFadden'
|
17
|
+
s.email = 'kevin+github@conceptsahead.com'
|
18
|
+
s.homepage = 'http://conceptsahead.com'
|
19
|
+
s.files = %w(README.textile Rakefile) + Dir.glob("{lib,test}/**/*")
|
20
|
+
s.executables = ['infuse']
|
21
|
+
|
22
|
+
# Can probably go older...
|
23
|
+
# s.add_dependency('redcloth')
|
24
|
+
end
|
25
|
+
|
26
|
+
Rake::GemPackageTask.new(spec) do |pkg|
|
27
|
+
pkg.gem_spec = spec
|
28
|
+
end
|
29
|
+
|
30
|
+
Rake::TestTask.new do |t|
|
31
|
+
t.libs << 'test'
|
32
|
+
t.test_files = FileList["test/**/*_test.rb"]
|
33
|
+
t.verbose = true
|
34
|
+
end
|
35
|
+
|
36
|
+
desc 'Generate the gemspec to serve this Gem from Github'
|
37
|
+
task :github do
|
38
|
+
file = File.dirname(__FILE__) + "/#{spec.name}.gemspec"
|
39
|
+
File.open(file, 'w') {|f| f << spec.to_ruby }
|
40
|
+
puts "Created gemspec: #{file}"
|
41
|
+
end
|
data/bin/infuse
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'infuse'
|
5
|
+
rescue LoadError => exception
|
6
|
+
$:.unshift File.dirname(File.expand_path(__FILE__)) + "/../lib"
|
7
|
+
retry
|
8
|
+
end
|
9
|
+
|
10
|
+
def title(text)
|
11
|
+
InfuseDSL.instance.title = text
|
12
|
+
end
|
13
|
+
|
14
|
+
def author(text)
|
15
|
+
InfuseDSL.instance.author = text
|
16
|
+
end
|
17
|
+
|
18
|
+
def company(text)
|
19
|
+
InfuseDSL.instance.company = text
|
20
|
+
end
|
21
|
+
|
22
|
+
def copyright(text)
|
23
|
+
InfuseDSL.instance.copyright = text
|
24
|
+
end
|
25
|
+
|
26
|
+
def subtitle(text)
|
27
|
+
InfuseDSL.instance.subtitle = text
|
28
|
+
end
|
29
|
+
|
30
|
+
def background(text)
|
31
|
+
InfuseDSL.instance.background = text
|
32
|
+
end
|
33
|
+
|
34
|
+
def slide(title, *content)
|
35
|
+
s = Slide.new(title, content)
|
36
|
+
InfuseDSL.instance.add_slide(s)
|
37
|
+
end
|
38
|
+
|
39
|
+
def notes(*content)
|
40
|
+
InfuseDSL.instance.slides.last.notes(content)
|
41
|
+
end
|
42
|
+
|
43
|
+
InfuseDSL.instance.source_file = ARGV[0]
|
44
|
+
InfuseDSL.instance.output_dir = File.dirname(ARGV[0]) + "/" + File.basename(ARGV[0], ".#{INFUSE_EXTENSION}")
|
45
|
+
|
46
|
+
load InfuseDSL.instance.source_file
|
47
|
+
InfuseDSL.instance.run
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'singleton'
|
2
|
+
|
3
|
+
class InfuseDSL
|
4
|
+
include Singleton
|
5
|
+
|
6
|
+
attr_accessor :slides, :title, :author, :company, :copyright, :subtitle, :background
|
7
|
+
attr_accessor :source_file, :output_dir
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@slides = []
|
11
|
+
|
12
|
+
@header_template = File.dirname(__FILE__) + "/themes/plain/header.html.erb"
|
13
|
+
@footer_template = File.dirname(__FILE__) + "/themes/plain/footer.html.erb"
|
14
|
+
@slide_template = File.dirname(__FILE__) + "/themes/plain/slide.html.erb"
|
15
|
+
end
|
16
|
+
|
17
|
+
def add_slide(slide)
|
18
|
+
@slides << slide
|
19
|
+
end
|
20
|
+
|
21
|
+
def run
|
22
|
+
header_tpl = IO.read(@header_template)
|
23
|
+
footer_tpl = IO.read(@footer_template)
|
24
|
+
slide_tpl = IO.read(@slide_template)
|
25
|
+
|
26
|
+
header_with_data = ERB.new(header_tpl, 0, ">").result(self.send(:binding))
|
27
|
+
footer_with_data = ERB.new(footer_tpl, 0, ">").result(self.send(:binding))
|
28
|
+
|
29
|
+
slides_with_data = ""
|
30
|
+
@slides.each do |s|
|
31
|
+
slides_with_data << s.convert(slide_tpl)
|
32
|
+
end
|
33
|
+
|
34
|
+
output = header_with_data + "\n" + slides_with_data + "\n" + footer_with_data
|
35
|
+
|
36
|
+
prepare_target_dir
|
37
|
+
|
38
|
+
begin
|
39
|
+
File.new(output_file, "w").puts(output)
|
40
|
+
rescue
|
41
|
+
puts ""
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
def output_file
|
48
|
+
@output_dir + "/" + File.basename(@source_file, ".#{INFUSE_EXTENSION}") + ".html"
|
49
|
+
end
|
50
|
+
|
51
|
+
def prepare_target_dir
|
52
|
+
begin
|
53
|
+
FileUtils.mkdir(@output_dir)
|
54
|
+
copy_default_files
|
55
|
+
rescue Errno::EEXIST
|
56
|
+
puts "-- #{output_dir} already exists -- canceling initialization. "
|
57
|
+
return
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def copy_default_files
|
62
|
+
FileUtils.cp_r(File.dirname(__FILE__) + "/../s6/shared/", @output_dir)
|
63
|
+
FileUtils.cp_r(File.dirname(__FILE__) + "/themes/plain/css/custom.css", @output_dir)
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
data/lib/infuse/slide.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
class Slide
|
2
|
+
def initialize(title, content_lines)
|
3
|
+
@title = title
|
4
|
+
@content = content_lines.to_s
|
5
|
+
@notes = ""
|
6
|
+
end
|
7
|
+
|
8
|
+
def notes(content)
|
9
|
+
@notes = content.to_s
|
10
|
+
end
|
11
|
+
|
12
|
+
def convert(slide_template, markup_lang="textile")
|
13
|
+
RedCloth.new(ERB.new(slide_template, 0, ">").result(self.send(:binding))).to_html
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
@import url(shared/slides.css); /* required to make the slide show run at all */
|
2
|
+
|
3
|
+
html, body {
|
4
|
+
color: black;
|
5
|
+
background-color: white;
|
6
|
+
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
|
7
|
+
}
|
8
|
+
|
9
|
+
a:link, a:visited { color: white; }
|
10
|
+
|
11
|
+
h1 { font-size: 30pt; }
|
12
|
+
h2 { font-size: 28pt; }
|
13
|
+
h3 { font-size: 25pt; }
|
14
|
+
p, li, td, th { font-size: 18pt; }
|
15
|
+
|
16
|
+
pre { font-size: 16pt; }
|
17
|
+
|
18
|
+
pre.code {
|
19
|
+
background-color: black;
|
20
|
+
padding: 5px;
|
21
|
+
border: silver thick groove;
|
22
|
+
-moz-border-radius: 11px;
|
23
|
+
}
|
24
|
+
|
25
|
+
|
26
|
+
div#header, div#footer {
|
27
|
+
color: #ffe8b2;
|
28
|
+
background-color: #ce8b45;
|
29
|
+
}
|
30
|
+
|
31
|
+
#currentSlide {
|
32
|
+
color: #ffe8b2;
|
33
|
+
}
|
34
|
+
|
35
|
+
#controls #navLinks a { color: #ffe8b2; }
|
36
|
+
|
37
|
+
.step { color: gray; }
|
38
|
+
/* or hide next steps e.g. .step { visibility: hidden; } */
|
39
|
+
.stepcurrent { color: yellow; }
|
@@ -0,0 +1,45 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title><%= @title %></title>
|
5
|
+
|
6
|
+
<!-- configuration parameters -->
|
7
|
+
<meta name="defaultView" content="slideshow">
|
8
|
+
<!-- style sheet links -->
|
9
|
+
<link rel="stylesheet" href="custom.css" type="text/css" media="projection" id="slideProj">
|
10
|
+
<link rel="stylesheet" href="shared/outline.css" type="text/css" media="screen" id="outlineStyle">
|
11
|
+
<link rel="stylesheet" href="shared/print.css" type="text/css" media="print" id="slidePrint">
|
12
|
+
|
13
|
+
<script src="shared/jquery.js" type="text/javascript"></script>
|
14
|
+
<script src="shared/slides.js" type="text/javascript"></script>
|
15
|
+
</head>
|
16
|
+
|
17
|
+
<body>
|
18
|
+
<div class="layout">
|
19
|
+
|
20
|
+
<% if background.length > 0 %>
|
21
|
+
<div class="background">
|
22
|
+
<object data="<%= @background %>" width="100%" height="100%">
|
23
|
+
</object>
|
24
|
+
</div>
|
25
|
+
<% end %>
|
26
|
+
|
27
|
+
<div id="controls"><!-- DO NOT EDIT --></div>
|
28
|
+
<div id="currentSlide"><!-- DO NOT EDIT --></div>
|
29
|
+
<div id="header"></div>
|
30
|
+
|
31
|
+
<div id='microsoft'>
|
32
|
+
<p>
|
33
|
+
Microsoft's Internet Explorer browser has no built-in vector graphics machinery required for "loss-free" gradient background themes.
|
34
|
+
</p>
|
35
|
+
<p>
|
36
|
+
Please upgrade to a better browser such as <a href='http://getfirefox.com'>Firefox</a>, <a href='http://www.opera.com/download'>Opera</a>,
|
37
|
+
<a href='http://google.com/chrome'>Chrome</a>, <a href='http://apple.com/safari/download'>Safari</a> or others with built-in vector graphics machinery and much more.
|
38
|
+
|
39
|
+
(Learn more or post questions or comments at the <a href='http://slideshow.rubyforge.org'>Slide Show (S9)</a> project site. Thanks!)
|
40
|
+
</p>
|
41
|
+
</div>
|
42
|
+
</div>
|
43
|
+
</div> <!-- layout -->
|
44
|
+
|
45
|
+
<div class="presentation">
|
File without changes
|
data/lib/infuse.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
h2. What's S5? What's S6?
|
2
|
+
|
3
|
+
Simple Standards-based Slide Show System (S5) is Eric Meyer's (of CSS fame) public domain (free, open source)
|
4
|
+
slide show package inspired by Opera Show and others that works in all modern browsers
|
5
|
+
without any plugin required because it includes its own slide show machinery in JavaScript. More "S5 Project Site »":http://meyerweb.com/eric/tools/s5
|
6
|
+
|
7
|
+
S6 started as a rewrite of Eric Meyer's S5 using the jQuery JavaScript library - offering easier to understand and easier
|
8
|
+
to extend code. Add plugins, effects and more. Contributions welcome!
|
9
|
+
|
10
|
+
h2. What's Slide Show (S9)? Slide Show Generator for S6
|
11
|
+
|
12
|
+
A Ruby gem that lets you create slide shows and author slides in plain text using
|
13
|
+
a wiki-style markup language that's easy-to-write and easy-to-read and ships "out-of-the-gem"
|
14
|
+
with S6 templates built-in. More "Slide Show ==(S9)== Project Site »":http://slideshow.rubyforge.org
|
15
|
+
|
16
|
+
h2. S6 in Action - Sample Slide Shows Online
|
17
|
+
|
18
|
+
Try some slide show samples powered by S6:
|
19
|
+
|
20
|
+
* "Slide Show (S9) 10-Minute Tutorial":http://slideshow.rubyforge.org/tutorial.html
|
21
|
+
* "Prototype vs jQuery: To and from JavaScript Libraries":http://slideshow.rubyforge.org/jquery.html
|
22
|
+
* "Adding Semantics to Your Web Site / RDF, RDFa, Microformats / Web 3.0 in Action":http://slideshow.rubyforge.org/friends.html
|
23
|
+
* "Ruby 1.9: What to Expect":http://slideshow.rubyforge.org/ruby19.html
|
24
|
+
|
25
|
+
Keyboard controls:
|
26
|
+
|
27
|
+
|_. Action |_. Key |
|
28
|
+
| Go to next slide | Space Bar, Right Arrow Down Arrow, Page Down |
|
29
|
+
| Go to previous slide | Left Arrow, Up Arrow, Page Up |
|
30
|
+
| Go to first slide | Home |
|
31
|
+
| Go to last slide | End |
|
32
|
+
| Toggle between slideshow and outline view (Ø) | T |
|
33
|
+
| Show/hide slide controls (Ø « ») | C, Move mouse to bottom right corner |
|
34
|
+
|
35
|
+
h2. About, License - Questions? Comments?
|
36
|
+
|
37
|
+
License. The slide show scripts and templates are dedicated to the <a href='http://creativecommons.org/licenses/publicdomain'>public domain</a>.
|
38
|
+
Use it as you please with no restrictions whatsoever.
|
39
|
+
|
40
|
+
Questions? Comments? Send them along to the
|
41
|
+
"Free Web Slide Show Alternatives (S5, S6, S9, Slidy And Friends) Forum/Mailing List":http://groups.google.com/group/webslideshow.
|
42
|
+
Thanks!
|
data/lib/s6/blank.css
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
@import url(shared/slides.css); /* required to make the slide show run at all */
|
2
|
+
|
3
|
+
html, body { color: white;
|
4
|
+
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; }
|
5
|
+
|
6
|
+
a:link, a:visited { color: white; }
|
7
|
+
|
8
|
+
h1 { font-size: 30pt; }
|
9
|
+
h2 { font-size: 28pt; }
|
10
|
+
h3 { font-size: 25pt; }
|
11
|
+
p, li, td, th { font-size: 18pt; }
|
12
|
+
|
13
|
+
pre { font-size: 16pt; }
|
14
|
+
|
15
|
+
pre.code {
|
16
|
+
background-color: black;
|
17
|
+
padding: 5px;
|
18
|
+
border: silver thick groove;
|
19
|
+
-moz-border-radius: 11px;
|
20
|
+
}
|
21
|
+
|
22
|
+
|
23
|
+
div#header, div#footer { color: silver; }
|
24
|
+
|
25
|
+
#currentSlide { color: silver;}
|
26
|
+
|
27
|
+
#controls #navLinks a { color: silver; }
|
28
|
+
|
29
|
+
.step { color: gray; }
|
30
|
+
/* or hide next steps e.g. .step { visibility: hidden; } */
|
31
|
+
.stepcurrent { color: yellow; }
|
data/lib/s6/blank.html
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>[your_title_here]</title>
|
5
|
+
|
6
|
+
<!-- configuration parameters -->
|
7
|
+
<meta name="defaultView" content="slideshow">
|
8
|
+
<!-- style sheet links -->
|
9
|
+
<link rel="stylesheet" href="blank.css" type="text/css" media="projection" id="slideProj">
|
10
|
+
<link rel="stylesheet" href="shared/outline.css" type="text/css" media="screen" id="outlineStyle">
|
11
|
+
<link rel="stylesheet" href="shared/print.css" type="text/css" media="print" id="slidePrint">
|
12
|
+
|
13
|
+
<!-- S6 JS -->
|
14
|
+
<script src="shared/jquery.js" type="text/javascript"></script>
|
15
|
+
<script src="shared/slides.js" type="text/javascript"></script>
|
16
|
+
|
17
|
+
</head>
|
18
|
+
<body>
|
19
|
+
|
20
|
+
<div class="layout">
|
21
|
+
|
22
|
+
<div class="background">
|
23
|
+
<object data="blank.svg" width="100%" height="100%">
|
24
|
+
</object>
|
25
|
+
</div>
|
26
|
+
|
27
|
+
<div id="controls"><!-- DO NOT EDIT --></div>
|
28
|
+
<div id="currentSlide"><!-- DO NOT EDIT --></div>
|
29
|
+
<div id="header"></div>
|
30
|
+
<div id="footer">
|
31
|
+
<h1>[your_footer_here]</h1>
|
32
|
+
<h2>[your_subfooter_here]</h2>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div id='microsoft'>
|
36
|
+
<p>
|
37
|
+
Microsoft's Internet Explorer browser
|
38
|
+
has no built-in vector graphics machinery
|
39
|
+
required for "loss-free" gradient background themes.
|
40
|
+
</p>
|
41
|
+
<p>
|
42
|
+
Please upgrade to a better browser
|
43
|
+
such as <a href='http://getfirefox.com'>Firefox</a>, <a href='http://www.opera.com/download'>Opera</a>,
|
44
|
+
<a href='http://google.com/chrome'>Chrome</a>, <a href='http://apple.com/safari/download'>Safari</a> or others
|
45
|
+
with built-in vector graphics machinery and much more.
|
46
|
+
|
47
|
+
(Learn more or post questions or comments
|
48
|
+
at the <a href='http://slideshow.rubyforge.org'>Slide Show (S9)</a>
|
49
|
+
project site. Thanks!)
|
50
|
+
</p>
|
51
|
+
</div>
|
52
|
+
</div>
|
53
|
+
|
54
|
+
<div class="presentation">
|
55
|
+
|
56
|
+
<!-- add slides here; example -->
|
57
|
+
|
58
|
+
<div class='slide'>
|
59
|
+
<h1>Your Slide Title Here</h1>
|
60
|
+
|
61
|
+
<ul>
|
62
|
+
<li>Item One Here</li>
|
63
|
+
<li>Item Two Here</li>
|
64
|
+
</ul>
|
65
|
+
</div>
|
66
|
+
|
67
|
+
<div class='slide'>
|
68
|
+
<h1>Steps Demos</h1>
|
69
|
+
|
70
|
+
<!-- mark list with class step to mark all items at once -->
|
71
|
+
<ul class='step'>
|
72
|
+
<li>Item 1.1 Here</li>
|
73
|
+
<li>Item 1.2 Here</li>
|
74
|
+
</ul>
|
75
|
+
|
76
|
+
<!-- or mark individual list items -->
|
77
|
+
<ul>
|
78
|
+
<li class='step'>Item 2.1 Here</li>
|
79
|
+
<li class='step'>Item 2.2 Here</li>
|
80
|
+
</ol>
|
81
|
+
</div>
|
82
|
+
|
83
|
+
|
84
|
+
<div class='slide'>
|
85
|
+
<h1>Another Slide Title Here</h1>
|
86
|
+
|
87
|
+
<p>yada yada yada</p>
|
88
|
+
</div>
|
89
|
+
|
90
|
+
|
91
|
+
</div> <!-- presentation -->
|
92
|
+
</body>
|
93
|
+
</html>
|
data/lib/s6/blank.svg
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg">
|
2
|
+
|
3
|
+
<defs>
|
4
|
+
<linearGradient id="dark" x1="0" y1="0" x2="1" y2="1">
|
5
|
+
<stop offset="0" style="stop-color: navy"/>
|
6
|
+
<stop offset="1" style="stop-color: aqua"/>
|
7
|
+
</linearGradient>
|
8
|
+
|
9
|
+
<linearGradient id="dark_reverse" x1="0" y1="0" x2="1" y2="1">
|
10
|
+
<stop offset="0" style="stop-color: aqua"/>
|
11
|
+
<stop offset="1" style="stop-color: navy"/>
|
12
|
+
</linearGradient>
|
13
|
+
|
14
|
+
<linearGradient id="light" x1="0" y1="0" x2="1" y2="1">
|
15
|
+
<stop offset="0" style="stop-color: navy"/>
|
16
|
+
<stop offset="1" style="stop-color: aqua"/>
|
17
|
+
</linearGradient>
|
18
|
+
|
19
|
+
<linearGradient id="top_bottom" x1="0" y1="0" x2="0" y2="1">
|
20
|
+
<stop offset="0%" style="stop-color: navy" />
|
21
|
+
<stop offset="100%" style="stop-color: aqua" />
|
22
|
+
</linearGradient>
|
23
|
+
|
24
|
+
<linearGradient id="left_right" x1="0" y1="0" x2="1" y2="0">
|
25
|
+
<stop offset="0%" style="stop-color: navy" />
|
26
|
+
<stop offset="100%" style="stop-color: aqua" />
|
27
|
+
</linearGradient>
|
28
|
+
|
29
|
+
<linearGradient id="repeat" x1="0.4" y1="0.4" x2="0.5" y2="0.5"
|
30
|
+
|
31
|
+
spreadMethod="repeat">
|
32
|
+
<stop offset="0%" style="stop-color: navy" />
|
33
|
+
<stop offset="50%" style="stop-color: aqua" />
|
34
|
+
<stop offset="100%" style="stop-color: navy" />
|
35
|
+
</linearGradient>
|
36
|
+
|
37
|
+
<radialGradient id="radial">
|
38
|
+
<stop offset="0%" style="stop-color: aqua" />
|
39
|
+
<stop offset="100%" style="stop-color: navy" />
|
40
|
+
</radialGradient>
|
41
|
+
|
42
|
+
|
43
|
+
<radialGradient id="radial_off_center" fx="0.7" fy="0.7" cx="0.5" cy="0.5" r="0.4">
|
44
|
+
<stop offset="0%" style="stop-color: aqua" />
|
45
|
+
<stop offset="100%" style="stop-color: navy" />
|
46
|
+
</radialGradient>
|
47
|
+
|
48
|
+
<radialGradient id="radial_repeat" fx="0.5" fy="0.5" cx="0.6" cy="0.6" r="0.2"
|
49
|
+
|
50
|
+
spreadMethod="repeat">
|
51
|
+
<stop offset="0%" style="stop-color: navy" />
|
52
|
+
<stop offset="50%" style="stop-color: aqua" />
|
53
|
+
<stop offset="100%" style="stop-color: navy" />
|
54
|
+
</radialGradient>
|
55
|
+
|
56
|
+
</defs>
|
57
|
+
|
58
|
+
<rect width="100%" height="100%"
|
59
|
+
|
60
|
+
style="fill: url(#top_bottom) "/>
|
61
|
+
|
62
|
+
</svg>
|