keydown 0.7.1 → 0.9.0
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.
- data/.gitignore +2 -0
- data/.travis.yml +3 -0
- data/LICENSE +1 -1
- data/README.md +16 -15
- data/VERSION +1 -1
- data/keydown.gemspec +9 -6
- data/lib/keydown.rb +9 -22
- data/lib/keydown/html_helpers.rb +12 -0
- data/lib/keydown/{lib/slide.rb → slide.rb} +16 -19
- data/lib/keydown/{lib/slidedeck.rb → slidedeck.rb} +20 -5
- data/lib/keydown/tasks.rb +5 -0
- data/lib/keydown/tasks/base.rb +15 -0
- data/lib/keydown/tasks/generate.rb +5 -1
- data/lib/keydown/tasks/slides.rb +1 -1
- data/lib/version.rb +1 -1
- data/spec/lib/html_helpers_spec.rb +26 -0
- data/spec/lib/slide_spec.rb +29 -17
- data/spec/lib/slidedeck_spec.rb +41 -13
- data/spec/spec_helper.rb +2 -6
- data/spec/tasks/generate_spec.rb +41 -20
- data/spec/tasks/slides_spec.rb +83 -44
- data/templates/deck.js/code.html.haml +1 -0
- data/templates/deck.js/index.html.haml +54 -0
- data/templates/deck.js/slide.html.haml +6 -0
- data/templates/generate/css/%presentation_name%.css +12 -1
- data/templates/generate/deck.js/core/deck.core.css +394 -0
- data/templates/generate/deck.js/core/deck.core.js +461 -0
- data/templates/generate/deck.js/core/deck.core.scss +432 -0
- data/templates/generate/deck.js/extensions/codemirror/CONTRIBUTORS.txt +2 -0
- data/templates/generate/deck.js/extensions/codemirror/MIT-LICENSE.txt +21 -0
- data/templates/generate/deck.js/extensions/codemirror/README.md +120 -0
- data/templates/generate/deck.js/extensions/codemirror/VERSION.txt +1 -0
- data/templates/generate/deck.js/extensions/codemirror/codemirror.js +21 -0
- data/templates/generate/deck.js/extensions/codemirror/deck.codemirror.css +89 -0
- data/templates/generate/deck.js/extensions/codemirror/deck.codemirror.js +213 -0
- data/templates/generate/deck.js/extensions/codemirror/deck.codemirror.scss +107 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/clike/clike.js +247 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/clike/index.html +102 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/clojure/clojure.js +207 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/clojure/index.html +85 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/coffeescript/LICENSE +22 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/coffeescript/coffeescript.js +325 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/coffeescript/index.html +722 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/css/css.js +124 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/css/index.html +56 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/diff/diff.css +3 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/diff/diff.js +13 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/diff/index.html +99 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/haskell/haskell.js +242 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/haskell/index.html +60 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/htmlmixed/htmlmixed.js +79 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/htmlmixed/index.html +52 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/javascript/index.html +78 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/javascript/javascript.js +348 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/lua/index.html +72 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/lua/lua.js +138 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/php/index.html +49 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/php/php.js +115 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/plsql/index.html +63 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/plsql/plsql.js +217 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/python/LICENSE.txt +21 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/python/index.html +123 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/python/python.js +321 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/r/LICENSE +24 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/r/index.html +74 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/r/r.js +141 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/rst/index.html +526 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/rst/rst.css +75 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/rst/rst.js +333 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/ruby/LICENSE +24 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/ruby/index.html +172 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/ruby/ruby.js +195 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/scheme/index.html +65 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/scheme/scheme.js +202 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/smalltalk/index.html +56 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/smalltalk/smalltalk.js +122 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/sparql/index.html +41 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/sparql/sparql.js +143 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/stex/index.html +96 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/stex/stex.js +167 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/velocity/index.html +103 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/velocity/velocity.js +146 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/xml/index.html +42 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/xml/xml.js +231 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/xmlpure/index.html +60 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/xmlpure/xmlpure.js +481 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/yaml/index.html +68 -0
- data/templates/generate/deck.js/extensions/codemirror/mode/yaml/yaml.js +95 -0
- data/templates/generate/deck.js/extensions/codemirror/themes/cobalt.css +17 -0
- data/templates/generate/deck.js/extensions/codemirror/themes/default.css +19 -0
- data/templates/generate/deck.js/extensions/codemirror/themes/elegant.css +9 -0
- data/templates/generate/deck.js/extensions/codemirror/themes/neat.css +8 -0
- data/templates/generate/deck.js/extensions/codemirror/themes/night.css +20 -0
- data/templates/generate/deck.js/extensions/goto/deck.goto.css +41 -0
- data/templates/generate/deck.js/extensions/goto/deck.goto.html +6 -0
- data/templates/generate/deck.js/extensions/goto/deck.goto.js +118 -0
- data/templates/generate/deck.js/extensions/goto/deck.goto.scss +46 -0
- data/templates/generate/deck.js/extensions/hash/deck.hash.css +13 -0
- data/templates/generate/deck.js/extensions/hash/deck.hash.html +2 -0
- data/templates/generate/deck.js/extensions/hash/deck.hash.js +125 -0
- data/templates/generate/deck.js/extensions/hash/deck.hash.scss +15 -0
- data/templates/generate/deck.js/extensions/menu/deck.menu.css +24 -0
- data/templates/generate/deck.js/extensions/menu/deck.menu.js +127 -0
- data/templates/generate/deck.js/extensions/menu/deck.menu.scss +29 -0
- data/templates/generate/deck.js/extensions/navigation/deck.navigation.css +43 -0
- data/templates/generate/deck.js/extensions/navigation/deck.navigation.html +3 -0
- data/templates/generate/deck.js/extensions/navigation/deck.navigation.js +83 -0
- data/templates/generate/deck.js/extensions/navigation/deck.navigation.scss +56 -0
- data/templates/generate/deck.js/extensions/scale/deck.scale.css +16 -0
- data/templates/generate/deck.js/extensions/scale/deck.scale.js +155 -0
- data/templates/generate/deck.js/extensions/scale/deck.scale.scss +17 -0
- data/templates/generate/deck.js/extensions/status/deck.status.css +14 -0
- data/templates/generate/deck.js/extensions/status/deck.status.html +6 -0
- data/templates/generate/deck.js/extensions/status/deck.status.js +42 -0
- data/templates/generate/deck.js/extensions/status/deck.status.scss +16 -0
- data/templates/generate/deck.js/support/jquery.1.6.4.min.js +4 -0
- data/templates/generate/deck.js/support/modernizr.custom.js +4 -0
- data/templates/generate/deck.js/themes/style/neon.css +114 -0
- data/templates/generate/deck.js/themes/style/neon.scss +139 -0
- data/templates/generate/deck.js/themes/style/swiss.css +75 -0
- data/templates/generate/deck.js/themes/style/swiss.scss +91 -0
- data/templates/generate/deck.js/themes/style/web-2.0.css +187 -0
- data/templates/generate/deck.js/themes/style/web-2.0.scss +214 -0
- data/templates/generate/deck.js/themes/transition/fade.css +44 -0
- data/templates/generate/deck.js/themes/transition/fade.scss +70 -0
- data/templates/generate/deck.js/themes/transition/horizontal-slide.css +79 -0
- data/templates/generate/deck.js/themes/transition/horizontal-slide.scss +94 -0
- data/templates/generate/deck.js/themes/transition/vertical-slide.css +97 -0
- data/templates/generate/deck.js/themes/transition/vertical-slide.scss +116 -0
- data/templates/keydown.css.erb +27 -23
- metadata +171 -32
- data/Gemfile.lock +0 -41
- data/templates/generate/css/rocks.css +0 -392
- data/templates/generate/css/syntax_highlighting.css +0 -135
- data/templates/generate/js/rocks.js +0 -419
- data/templates/rocks/index.rhtml +0 -132
- data/templates/rocks/slide.rhtml +0 -10
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/LICENSE
CHANGED
data/README.md
CHANGED
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
KeyDown is another 'Presentation System in a single HTML page' inspired by [Showoff](http://github.com/drnic/showoff), [Slidedown](http://github.com/nakajima/slidedown),
|
|
4
4
|
[HTML5 Rocks](http://studio.html5rocks.com/#Deck), with a little [Presentation Zen](http://amzn.to/8X55H2) thrown in.
|
|
5
5
|
|
|
6
|
+
It uses the excellent [deck.js](http://imakewebthings.github.com/deck.js) and its extensions for the presentation.
|
|
7
|
+
|
|
6
8
|
## Usage
|
|
9
|
+
$ gem install keydown
|
|
7
10
|
|
|
8
11
|
### Generate a Template
|
|
9
12
|
|
|
@@ -15,8 +18,10 @@ This will make:
|
|
|
15
18
|
|
|
16
19
|
| - my_presentation/
|
|
17
20
|
| - css/ - Keydown CSS and a file for you to customize
|
|
21
|
+
| - deck.js/
|
|
18
22
|
| - images/ - Some Keydown images, but also for you
|
|
19
23
|
| - js/ - Keydown JavaScript, and a file for you to customize
|
|
24
|
+
|
|
|
20
25
|
| - my_presentation.md
|
|
21
26
|
|
|
22
27
|
### Write your presentation in Markdown
|
|
@@ -67,24 +72,14 @@ Give your presentation! Open `my_presentation.html` in a browser and talk away:
|
|
|
67
72
|
|
|
68
73
|
### Presentation Title
|
|
69
74
|
|
|
70
|
-
An optional first `H1` before a `!SLIDE` is treated as the presentation title
|
|
75
|
+
An optional first `H1` before a `!SLIDE` is treated as the presentation title in the HTML `<title>`.
|
|
71
76
|
|
|
72
|
-
### Configuration Page & Navigation
|
|
73
|
-
|
|
74
|
-
The first page of a Keydown presentation is a configuration page that shows the presentation title, how to navigate the presentation, and some visual effect options.
|
|
75
|
-
|
|
76
77
|
### Slide classes
|
|
77
78
|
|
|
78
79
|
Any text that follows `!SLIDE` will be added to the slide as CSS classes.
|
|
79
80
|
|
|
80
81
|
!SLIDE dark
|
|
81
82
|
|
|
82
|
-
There are some built-in classes you can use:
|
|
83
|
-
|
|
84
|
-
* `middle` will center all the elements on the slide
|
|
85
|
-
* `bulleted` - by default, lists to not have bullets; use this class to add them back
|
|
86
|
-
* `dark` - by default, slides are light with dark fonts; this swaps a slide
|
|
87
|
-
|
|
88
83
|
You can define your own CSS classes (see below).
|
|
89
84
|
|
|
90
85
|
### Images
|
|
@@ -115,7 +110,7 @@ If you wish to have attribution text, an icon (currently Flickr and Creative Com
|
|
|
115
110
|
|
|
116
111
|
### Syntax Highlighting
|
|
117
112
|
|
|
118
|
-
Code syntax highlighting is done via [
|
|
113
|
+
Code syntax highlighting is done via [CodeMirror](http://codemirror.net).
|
|
119
114
|
|
|
120
115
|
Mark your code by block escaping via `@@@` or ` ``` `
|
|
121
116
|
|
|
@@ -149,18 +144,23 @@ All css files in the `css` directory will be linked into your presentation HTML
|
|
|
149
144
|
|
|
150
145
|
All JavaScript files in the `js` directory will be linked in your presentation HTML file.
|
|
151
146
|
|
|
147
|
+
### Deck.js Extensions
|
|
148
|
+
|
|
149
|
+
Any extension CSS and JS will be loaded if copied into the project.
|
|
150
|
+
|
|
151
|
+
|
|
152
152
|
## Requirements
|
|
153
153
|
|
|
154
154
|
### For Use
|
|
155
155
|
|
|
156
156
|
* Ruby and Rubygems
|
|
157
|
-
* [Pygments](http://pygments.org) is required for code syntax highlighting
|
|
158
157
|
* Other dependent gems will be installed
|
|
159
158
|
|
|
160
159
|
### For Development
|
|
161
160
|
|
|
162
161
|
* RSpec
|
|
163
162
|
* Nokogiri
|
|
163
|
+
* Other dependent gems will be installed
|
|
164
164
|
|
|
165
165
|
## Note on Patches/Pull Requests
|
|
166
166
|
|
|
@@ -174,10 +174,11 @@ All JavaScript files in the `js` directory will be linked in your presentation H
|
|
|
174
174
|
|
|
175
175
|
Thanks to:
|
|
176
176
|
|
|
177
|
-
* HTML5 Rocks guys for
|
|
177
|
+
* HTML5 Rocks guys for the original great presentation template
|
|
178
178
|
* [@nakajima](http://twitter.com/nakajima) & [Slidedown](http://github.com/nakajima/slidedown) for some parsing
|
|
179
|
+
* [Caleb](http://github.com/imakewebthings) for making deck.js & testing it with [Jasmine](http://pivotal.github.com/jasmine)
|
|
179
180
|
* The various Github guys for Albino, Gollum, etc.
|
|
180
181
|
|
|
181
182
|
## Copyright
|
|
182
183
|
|
|
183
|
-
Copyright ©
|
|
184
|
+
Copyright © Infews LLC. See LICENSE for details.
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.9.0
|
data/keydown.gemspec
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
|
-
$:.push File.expand_path(
|
|
3
|
-
require
|
|
2
|
+
$:.push File.expand_path('lib', __FILE__)
|
|
3
|
+
require './lib/version.rb'
|
|
4
4
|
|
|
5
5
|
Gem::Specification.new do |s|
|
|
6
6
|
s.name = "keydown"
|
|
@@ -10,13 +10,16 @@ Gem::Specification.new do |s|
|
|
|
10
10
|
s.email = ["dwfrank@infe.ws"]
|
|
11
11
|
s.homepage = "http://rubygems.org/gems/keydown"
|
|
12
12
|
s.summary = %q{Yet another "Slides in HTML" generator}
|
|
13
|
-
s.description = %q{Bastard child of Slidedown,
|
|
13
|
+
s.description = %q{Bastard child of Slidedown, deck.js and organic fair trade Bolivian coffee}
|
|
14
14
|
|
|
15
|
-
s.add_dependency 'thor'
|
|
15
|
+
s.add_dependency 'thor'
|
|
16
|
+
s.add_dependency 'tilt'
|
|
17
|
+
s.add_dependency 'haml'
|
|
18
|
+
s.add_dependency 'sass'
|
|
16
19
|
s.add_dependency 'rdiscount', '>= 1.6.8'
|
|
17
|
-
s.add_dependency 'coderay', '~> 0.9.8'
|
|
18
20
|
|
|
19
|
-
s.add_development_dependency "
|
|
21
|
+
s.add_development_dependency "rake"
|
|
22
|
+
s.add_development_dependency "rspec"
|
|
20
23
|
s.add_development_dependency "fuubar"
|
|
21
24
|
s.add_development_dependency "nokogiri"
|
|
22
25
|
s.add_development_dependency "gem-release"
|
data/lib/keydown.rb
CHANGED
|
@@ -1,22 +1,9 @@
|
|
|
1
|
-
require '
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
@@source_root
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def self.template_dir
|
|
14
|
-
@@template_dir
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
Dir["#{File.dirname(__FILE__)}/keydown/**/*.rb"].each do |file|
|
|
21
|
-
require file
|
|
22
|
-
end
|
|
1
|
+
require 'ostruct'
|
|
2
|
+
require 'digest/sha1'
|
|
3
|
+
require 'tilt'
|
|
4
|
+
|
|
5
|
+
require 'version'
|
|
6
|
+
require 'keydown/html_helpers'
|
|
7
|
+
require 'keydown/slide'
|
|
8
|
+
require 'keydown/slidedeck'
|
|
9
|
+
require 'keydown/tasks'
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
require 'digest/sha1'
|
|
2
|
-
|
|
3
1
|
module Keydown
|
|
4
2
|
class Slide
|
|
5
3
|
|
|
@@ -27,7 +25,7 @@ module Keydown
|
|
|
27
25
|
end
|
|
28
26
|
|
|
29
27
|
def classnames
|
|
30
|
-
@classnames.join(' ')
|
|
28
|
+
@classnames.length > 0 ? { :class => @classnames.join(' ') } : {}
|
|
31
29
|
end
|
|
32
30
|
|
|
33
31
|
def container_classnames
|
|
@@ -44,25 +42,24 @@ module Keydown
|
|
|
44
42
|
end
|
|
45
43
|
|
|
46
44
|
def background_attribution_classnames
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
names << if background_image[:attribution_text]
|
|
50
|
-
background_image[:service]
|
|
51
|
-
else
|
|
52
|
-
'hidden'
|
|
53
|
-
end
|
|
45
|
+
return [] unless background_image[:attribution_text] || background_image[:service]
|
|
54
46
|
|
|
55
|
-
|
|
47
|
+
['attribution', background_image[:service]].join(' ')
|
|
56
48
|
end
|
|
57
49
|
|
|
58
50
|
def to_html
|
|
59
|
-
require '
|
|
51
|
+
require 'tilt'
|
|
60
52
|
require 'rdiscount'
|
|
61
53
|
|
|
62
|
-
|
|
63
|
-
|
|
54
|
+
markdown = RDiscount.new(@content)
|
|
55
|
+
context = OpenStruct.new(:html_content => markdown.to_html,
|
|
56
|
+
:container_classnames => container_classnames,
|
|
57
|
+
:classnames => classnames,
|
|
58
|
+
:background_attribution_classnames => background_attribution_classnames,
|
|
59
|
+
:background_image => background_image)
|
|
64
60
|
|
|
65
|
-
|
|
61
|
+
slide = Tilt.new(File.join(Tasks.template_dir, 'slide.html.haml'))
|
|
62
|
+
slide.render(context)
|
|
66
63
|
end
|
|
67
64
|
|
|
68
65
|
private
|
|
@@ -112,17 +109,17 @@ module Keydown
|
|
|
112
109
|
|
|
113
110
|
def highlight_code!
|
|
114
111
|
@codemap.each do |id, code_block|
|
|
115
|
-
|
|
112
|
+
language = code_block[:lang]
|
|
116
113
|
code = code_block[:code]
|
|
117
114
|
if code.lines.all? { |line| line =~ /\A\r?\n\Z/ || line =~ /^( |\t)/ }
|
|
118
115
|
code.gsub!(/^( |\t)/m, '')
|
|
119
116
|
end
|
|
120
117
|
|
|
121
|
-
|
|
118
|
+
context = OpenStruct.new :language => language, :code => code
|
|
119
|
+
template = Tilt.new(File.join(Tasks.template_dir, 'code.html.haml'))
|
|
122
120
|
|
|
123
|
-
@content.gsub!(id,
|
|
121
|
+
@content.gsub!(id, template.render(context))
|
|
124
122
|
end
|
|
125
123
|
end
|
|
126
|
-
|
|
127
124
|
end
|
|
128
125
|
end
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
module Keydown
|
|
2
2
|
class SlideDeck
|
|
3
3
|
|
|
4
|
+
class Context < OpenStruct
|
|
5
|
+
include HtmlHelpers
|
|
6
|
+
end
|
|
7
|
+
|
|
4
8
|
attr_reader :title
|
|
5
9
|
attr_reader :slides
|
|
6
10
|
|
|
@@ -15,16 +19,27 @@ module Keydown
|
|
|
15
19
|
end
|
|
16
20
|
|
|
17
21
|
def to_html
|
|
18
|
-
require '
|
|
22
|
+
require 'tilt'
|
|
19
23
|
|
|
20
24
|
css_files = ['css/keydown.css']
|
|
21
25
|
css_files += Dir.glob('css/*.css')
|
|
22
26
|
css_files.uniq!
|
|
23
|
-
css_files -= ['css/rocks.css']
|
|
24
|
-
js_files = Dir.glob('js/*.js') - ['js/rocks.js']
|
|
25
27
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
extension_dirs = Dir.glob('deck.js/extensions/*').select {|f| File.directory? f}
|
|
29
|
+
extension_css = extension_dirs.inject([]) do |files, dir|
|
|
30
|
+
files += Dir.glob("#{dir}/*.css")
|
|
31
|
+
files
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
context = Context.new(:title => @title,
|
|
35
|
+
:css_files => css_files,
|
|
36
|
+
:js_files => Dir.glob('js/**/*.js') || [],
|
|
37
|
+
:slides => @slides,
|
|
38
|
+
:extensions_js_files => Dir.glob('deck.js/extensions/**/*.js') || [],
|
|
39
|
+
:extensions_css_files => extension_css)
|
|
40
|
+
|
|
41
|
+
template = Tilt.new(File.join(Tasks.template_dir, 'index.html.haml'))
|
|
42
|
+
template.render(context)
|
|
28
43
|
end
|
|
29
44
|
|
|
30
45
|
private
|
|
@@ -5,8 +5,12 @@ module Keydown
|
|
|
5
5
|
desc "generate NAME", "Make a directory & sample files for presentation NAME"
|
|
6
6
|
|
|
7
7
|
def generate(name)
|
|
8
|
-
@presentation_name = name
|
|
8
|
+
@presentation_name = name # instance variable used when the directory is copied
|
|
9
9
|
directory "templates/generate", name
|
|
10
|
+
|
|
11
|
+
copy_file "templates/generate/deck.js/themes/transition/horizontal-slide.css", "#{name}/css/horizontal-slide.css"
|
|
12
|
+
copy_file "templates/generate/deck.js/themes/style/swiss.css", "#{name}/css/swiss.css"
|
|
13
|
+
copy_file "templates/generate/deck.js/extensions/codemirror/themes/default.css", "#{name}/css/default.css"
|
|
10
14
|
end
|
|
11
15
|
end
|
|
12
16
|
end
|
data/lib/keydown/tasks/slides.rb
CHANGED
|
@@ -12,7 +12,7 @@ module Keydown
|
|
|
12
12
|
return
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
@@template_dir = File.join(Keydown::Tasks.source_root, 'templates', '
|
|
15
|
+
@@template_dir = File.join(Keydown::Tasks.source_root, 'templates', 'deck.js')
|
|
16
16
|
|
|
17
17
|
say "Creating Keydown presentation from #{file}", :yellow
|
|
18
18
|
|
data/lib/version.rb
CHANGED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Keydown::HtmlHelpers do
|
|
4
|
+
|
|
5
|
+
before do
|
|
6
|
+
|
|
7
|
+
class TestContext
|
|
8
|
+
include Keydown::HtmlHelpers
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
@context = TestContext.new
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "#stylesheet" do
|
|
15
|
+
it "should produce an HTML stylesheet link tag" do
|
|
16
|
+
@context.stylesheet("/foo/bar/baz.css").should == %q{<link href="/foo/bar/baz.css" rel="stylesheet" type="text/css"/>}
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe "#script" do
|
|
21
|
+
it "should produce an HTML JavaScript script tag" do
|
|
22
|
+
@context.script("/foo/bar/baz.js").should == %q{<script src="/foo/bar/baz.js" type="text/javascript"></script>}
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
data/spec/lib/slide_spec.rb
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe Keydown::Slide do
|
|
4
4
|
before :each do
|
|
5
5
|
module Keydown
|
|
6
6
|
class Tasks
|
|
7
7
|
def self.template_dir
|
|
8
|
-
File.join(Keydown::Tasks.source_root, 'templates', '
|
|
8
|
+
File.join(Keydown::Tasks.source_root, 'templates', 'deck.js')
|
|
9
9
|
end
|
|
10
10
|
end
|
|
11
11
|
end
|
|
@@ -48,8 +48,12 @@ describe Keydown::Slide do
|
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
shared_examples_for "syntax highlighting" do
|
|
51
|
-
it "
|
|
52
|
-
@doc.css('
|
|
51
|
+
it "setup the code segments for highlighting" do
|
|
52
|
+
@doc.css('textarea').length.should == 1
|
|
53
|
+
|
|
54
|
+
code_block = @doc.css('textarea')[0]
|
|
55
|
+
code_block['class'].should == 'code'
|
|
56
|
+
code_block['mode'].should == 'ruby'
|
|
53
57
|
end
|
|
54
58
|
end
|
|
55
59
|
|
|
@@ -64,7 +68,7 @@ With some text
|
|
|
64
68
|
a simple note
|
|
65
69
|
SLIDE
|
|
66
70
|
|
|
67
|
-
@classnames =
|
|
71
|
+
@classnames = {}
|
|
68
72
|
@slide = Keydown::Slide.new(@slide_text)
|
|
69
73
|
end
|
|
70
74
|
|
|
@@ -92,7 +96,7 @@ With some text
|
|
|
92
96
|
a simple note
|
|
93
97
|
SLIDE
|
|
94
98
|
|
|
95
|
-
@classnames = 'foo'
|
|
99
|
+
@classnames = {:class => 'foo'}
|
|
96
100
|
@slide = Keydown::Slide.new(@slide_text, 'foo')
|
|
97
101
|
end
|
|
98
102
|
|
|
@@ -102,7 +106,7 @@ a simple note
|
|
|
102
106
|
before :each do
|
|
103
107
|
@html = @slide.to_html
|
|
104
108
|
@doc = Nokogiri(@html)
|
|
105
|
-
@slide_selector = "section.#{@classnames}"
|
|
109
|
+
@slide_selector = "section.#{@classnames[:class]}"
|
|
106
110
|
end
|
|
107
111
|
|
|
108
112
|
it_should_behave_like "generating HTML"
|
|
@@ -120,7 +124,7 @@ With some text
|
|
|
120
124
|
a simple note
|
|
121
125
|
SLIDE
|
|
122
126
|
|
|
123
|
-
@classnames = 'foo bar'
|
|
127
|
+
@classnames = {:class => 'foo bar'}
|
|
124
128
|
@slide = Keydown::Slide.new(@slide_text, 'foo bar')
|
|
125
129
|
|
|
126
130
|
end
|
|
@@ -131,7 +135,7 @@ a simple note
|
|
|
131
135
|
before :each do
|
|
132
136
|
@html = @slide.to_html
|
|
133
137
|
@doc = Nokogiri(@html)
|
|
134
|
-
@slide_selector = "section.#{@classnames}"
|
|
138
|
+
@slide_selector = "section.#{@classnames[:class]}"
|
|
135
139
|
end
|
|
136
140
|
it_should_behave_like "generating HTML"
|
|
137
141
|
end
|
|
@@ -145,7 +149,7 @@ a simple note
|
|
|
145
149
|
With some text
|
|
146
150
|
SLIDE
|
|
147
151
|
|
|
148
|
-
@classnames =
|
|
152
|
+
@classnames = {}
|
|
149
153
|
@slide = Keydown::Slide.new(@slide_text)
|
|
150
154
|
end
|
|
151
155
|
|
|
@@ -188,7 +192,7 @@ a simple note
|
|
|
188
192
|
|
|
189
193
|
SLIDE
|
|
190
194
|
|
|
191
|
-
@classnames =
|
|
195
|
+
@classnames = {}
|
|
192
196
|
template_dir = File.join(Keydown::Tasks.source_root, 'templates', 'rocks')
|
|
193
197
|
@slide = Keydown::Slide.new(@slide_text)
|
|
194
198
|
end
|
|
@@ -225,7 +229,7 @@ a simple note
|
|
|
225
229
|
|
|
226
230
|
SLIDE
|
|
227
231
|
|
|
228
|
-
@classnames =
|
|
232
|
+
@classnames = {}
|
|
229
233
|
@slide = Keydown::Slide.new(@slide_text)
|
|
230
234
|
end
|
|
231
235
|
|
|
@@ -240,11 +244,15 @@ a simple note
|
|
|
240
244
|
|
|
241
245
|
it_should_behave_like "generating HTML"
|
|
242
246
|
it_should_behave_like "syntax highlighting"
|
|
247
|
+
|
|
248
|
+
it "should not have a an attribution for the background image" do
|
|
249
|
+
@doc.css('.attribution').length.should == 0
|
|
250
|
+
end
|
|
243
251
|
end
|
|
244
252
|
end
|
|
245
253
|
end
|
|
246
254
|
|
|
247
|
-
describe "with an image for a full-bleed background" do
|
|
255
|
+
describe "with an image for a full-bleed background without attribution" do
|
|
248
256
|
before(:each) do
|
|
249
257
|
@slide_text = <<-SLIDE
|
|
250
258
|
|
|
@@ -258,7 +266,7 @@ a simple note
|
|
|
258
266
|
|
|
259
267
|
SLIDE
|
|
260
268
|
|
|
261
|
-
@classnames =
|
|
269
|
+
@classnames = {}
|
|
262
270
|
@slide = Keydown::Slide.new(@slide_text.chomp)
|
|
263
271
|
end
|
|
264
272
|
|
|
@@ -269,7 +277,7 @@ a simple note
|
|
|
269
277
|
@html = @slide.to_html
|
|
270
278
|
@doc = Nokogiri(@html)
|
|
271
279
|
@slide_selector = "section"
|
|
272
|
-
@slide_container = @doc.css('
|
|
280
|
+
@slide_container = @doc.css('section.slide')[0]
|
|
273
281
|
end
|
|
274
282
|
|
|
275
283
|
it_should_behave_like "generating HTML"
|
|
@@ -290,6 +298,10 @@ a simple note
|
|
|
290
298
|
@slide_container['class'].split(' ').should include('my_background')
|
|
291
299
|
end
|
|
292
300
|
|
|
301
|
+
it "should not have a an attribution for the background image" do
|
|
302
|
+
@doc.css('.attribution').length.should == 0
|
|
303
|
+
end
|
|
304
|
+
|
|
293
305
|
end
|
|
294
306
|
end
|
|
295
307
|
|
|
@@ -307,7 +319,7 @@ a simple note
|
|
|
307
319
|
|
|
308
320
|
SLIDE
|
|
309
321
|
|
|
310
|
-
@classnames =
|
|
322
|
+
@classnames = {}
|
|
311
323
|
@slide = Keydown::Slide.new(@slide_text.chomp)
|
|
312
324
|
end
|
|
313
325
|
|
|
@@ -318,7 +330,7 @@ a simple note
|
|
|
318
330
|
@html = @slide.to_html
|
|
319
331
|
@doc = Nokogiri(@html)
|
|
320
332
|
@slide_selector = "section"
|
|
321
|
-
@slide_container = @doc.css('
|
|
333
|
+
@slide_container = @doc.css('section.slide')[0]
|
|
322
334
|
end
|
|
323
335
|
|
|
324
336
|
it_should_behave_like "generating HTML"
|