keydown 0.7.1 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- 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"
|