keydown 0.7.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. data/.gitignore +2 -0
  2. data/.travis.yml +3 -0
  3. data/LICENSE +1 -1
  4. data/README.md +16 -15
  5. data/VERSION +1 -1
  6. data/keydown.gemspec +9 -6
  7. data/lib/keydown.rb +9 -22
  8. data/lib/keydown/html_helpers.rb +12 -0
  9. data/lib/keydown/{lib/slide.rb → slide.rb} +16 -19
  10. data/lib/keydown/{lib/slidedeck.rb → slidedeck.rb} +20 -5
  11. data/lib/keydown/tasks.rb +5 -0
  12. data/lib/keydown/tasks/base.rb +15 -0
  13. data/lib/keydown/tasks/generate.rb +5 -1
  14. data/lib/keydown/tasks/slides.rb +1 -1
  15. data/lib/version.rb +1 -1
  16. data/spec/lib/html_helpers_spec.rb +26 -0
  17. data/spec/lib/slide_spec.rb +29 -17
  18. data/spec/lib/slidedeck_spec.rb +41 -13
  19. data/spec/spec_helper.rb +2 -6
  20. data/spec/tasks/generate_spec.rb +41 -20
  21. data/spec/tasks/slides_spec.rb +83 -44
  22. data/templates/deck.js/code.html.haml +1 -0
  23. data/templates/deck.js/index.html.haml +54 -0
  24. data/templates/deck.js/slide.html.haml +6 -0
  25. data/templates/generate/css/%presentation_name%.css +12 -1
  26. data/templates/generate/deck.js/core/deck.core.css +394 -0
  27. data/templates/generate/deck.js/core/deck.core.js +461 -0
  28. data/templates/generate/deck.js/core/deck.core.scss +432 -0
  29. data/templates/generate/deck.js/extensions/codemirror/CONTRIBUTORS.txt +2 -0
  30. data/templates/generate/deck.js/extensions/codemirror/MIT-LICENSE.txt +21 -0
  31. data/templates/generate/deck.js/extensions/codemirror/README.md +120 -0
  32. data/templates/generate/deck.js/extensions/codemirror/VERSION.txt +1 -0
  33. data/templates/generate/deck.js/extensions/codemirror/codemirror.js +21 -0
  34. data/templates/generate/deck.js/extensions/codemirror/deck.codemirror.css +89 -0
  35. data/templates/generate/deck.js/extensions/codemirror/deck.codemirror.js +213 -0
  36. data/templates/generate/deck.js/extensions/codemirror/deck.codemirror.scss +107 -0
  37. data/templates/generate/deck.js/extensions/codemirror/mode/clike/clike.js +247 -0
  38. data/templates/generate/deck.js/extensions/codemirror/mode/clike/index.html +102 -0
  39. data/templates/generate/deck.js/extensions/codemirror/mode/clojure/clojure.js +207 -0
  40. data/templates/generate/deck.js/extensions/codemirror/mode/clojure/index.html +85 -0
  41. data/templates/generate/deck.js/extensions/codemirror/mode/coffeescript/LICENSE +22 -0
  42. data/templates/generate/deck.js/extensions/codemirror/mode/coffeescript/coffeescript.js +325 -0
  43. data/templates/generate/deck.js/extensions/codemirror/mode/coffeescript/index.html +722 -0
  44. data/templates/generate/deck.js/extensions/codemirror/mode/css/css.js +124 -0
  45. data/templates/generate/deck.js/extensions/codemirror/mode/css/index.html +56 -0
  46. data/templates/generate/deck.js/extensions/codemirror/mode/diff/diff.css +3 -0
  47. data/templates/generate/deck.js/extensions/codemirror/mode/diff/diff.js +13 -0
  48. data/templates/generate/deck.js/extensions/codemirror/mode/diff/index.html +99 -0
  49. data/templates/generate/deck.js/extensions/codemirror/mode/haskell/haskell.js +242 -0
  50. data/templates/generate/deck.js/extensions/codemirror/mode/haskell/index.html +60 -0
  51. data/templates/generate/deck.js/extensions/codemirror/mode/htmlmixed/htmlmixed.js +79 -0
  52. data/templates/generate/deck.js/extensions/codemirror/mode/htmlmixed/index.html +52 -0
  53. data/templates/generate/deck.js/extensions/codemirror/mode/javascript/index.html +78 -0
  54. data/templates/generate/deck.js/extensions/codemirror/mode/javascript/javascript.js +348 -0
  55. data/templates/generate/deck.js/extensions/codemirror/mode/lua/index.html +72 -0
  56. data/templates/generate/deck.js/extensions/codemirror/mode/lua/lua.js +138 -0
  57. data/templates/generate/deck.js/extensions/codemirror/mode/php/index.html +49 -0
  58. data/templates/generate/deck.js/extensions/codemirror/mode/php/php.js +115 -0
  59. data/templates/generate/deck.js/extensions/codemirror/mode/plsql/index.html +63 -0
  60. data/templates/generate/deck.js/extensions/codemirror/mode/plsql/plsql.js +217 -0
  61. data/templates/generate/deck.js/extensions/codemirror/mode/python/LICENSE.txt +21 -0
  62. data/templates/generate/deck.js/extensions/codemirror/mode/python/index.html +123 -0
  63. data/templates/generate/deck.js/extensions/codemirror/mode/python/python.js +321 -0
  64. data/templates/generate/deck.js/extensions/codemirror/mode/r/LICENSE +24 -0
  65. data/templates/generate/deck.js/extensions/codemirror/mode/r/index.html +74 -0
  66. data/templates/generate/deck.js/extensions/codemirror/mode/r/r.js +141 -0
  67. data/templates/generate/deck.js/extensions/codemirror/mode/rst/index.html +526 -0
  68. data/templates/generate/deck.js/extensions/codemirror/mode/rst/rst.css +75 -0
  69. data/templates/generate/deck.js/extensions/codemirror/mode/rst/rst.js +333 -0
  70. data/templates/generate/deck.js/extensions/codemirror/mode/ruby/LICENSE +24 -0
  71. data/templates/generate/deck.js/extensions/codemirror/mode/ruby/index.html +172 -0
  72. data/templates/generate/deck.js/extensions/codemirror/mode/ruby/ruby.js +195 -0
  73. data/templates/generate/deck.js/extensions/codemirror/mode/scheme/index.html +65 -0
  74. data/templates/generate/deck.js/extensions/codemirror/mode/scheme/scheme.js +202 -0
  75. data/templates/generate/deck.js/extensions/codemirror/mode/smalltalk/index.html +56 -0
  76. data/templates/generate/deck.js/extensions/codemirror/mode/smalltalk/smalltalk.js +122 -0
  77. data/templates/generate/deck.js/extensions/codemirror/mode/sparql/index.html +41 -0
  78. data/templates/generate/deck.js/extensions/codemirror/mode/sparql/sparql.js +143 -0
  79. data/templates/generate/deck.js/extensions/codemirror/mode/stex/index.html +96 -0
  80. data/templates/generate/deck.js/extensions/codemirror/mode/stex/stex.js +167 -0
  81. data/templates/generate/deck.js/extensions/codemirror/mode/velocity/index.html +103 -0
  82. data/templates/generate/deck.js/extensions/codemirror/mode/velocity/velocity.js +146 -0
  83. data/templates/generate/deck.js/extensions/codemirror/mode/xml/index.html +42 -0
  84. data/templates/generate/deck.js/extensions/codemirror/mode/xml/xml.js +231 -0
  85. data/templates/generate/deck.js/extensions/codemirror/mode/xmlpure/index.html +60 -0
  86. data/templates/generate/deck.js/extensions/codemirror/mode/xmlpure/xmlpure.js +481 -0
  87. data/templates/generate/deck.js/extensions/codemirror/mode/yaml/index.html +68 -0
  88. data/templates/generate/deck.js/extensions/codemirror/mode/yaml/yaml.js +95 -0
  89. data/templates/generate/deck.js/extensions/codemirror/themes/cobalt.css +17 -0
  90. data/templates/generate/deck.js/extensions/codemirror/themes/default.css +19 -0
  91. data/templates/generate/deck.js/extensions/codemirror/themes/elegant.css +9 -0
  92. data/templates/generate/deck.js/extensions/codemirror/themes/neat.css +8 -0
  93. data/templates/generate/deck.js/extensions/codemirror/themes/night.css +20 -0
  94. data/templates/generate/deck.js/extensions/goto/deck.goto.css +41 -0
  95. data/templates/generate/deck.js/extensions/goto/deck.goto.html +6 -0
  96. data/templates/generate/deck.js/extensions/goto/deck.goto.js +118 -0
  97. data/templates/generate/deck.js/extensions/goto/deck.goto.scss +46 -0
  98. data/templates/generate/deck.js/extensions/hash/deck.hash.css +13 -0
  99. data/templates/generate/deck.js/extensions/hash/deck.hash.html +2 -0
  100. data/templates/generate/deck.js/extensions/hash/deck.hash.js +125 -0
  101. data/templates/generate/deck.js/extensions/hash/deck.hash.scss +15 -0
  102. data/templates/generate/deck.js/extensions/menu/deck.menu.css +24 -0
  103. data/templates/generate/deck.js/extensions/menu/deck.menu.js +127 -0
  104. data/templates/generate/deck.js/extensions/menu/deck.menu.scss +29 -0
  105. data/templates/generate/deck.js/extensions/navigation/deck.navigation.css +43 -0
  106. data/templates/generate/deck.js/extensions/navigation/deck.navigation.html +3 -0
  107. data/templates/generate/deck.js/extensions/navigation/deck.navigation.js +83 -0
  108. data/templates/generate/deck.js/extensions/navigation/deck.navigation.scss +56 -0
  109. data/templates/generate/deck.js/extensions/scale/deck.scale.css +16 -0
  110. data/templates/generate/deck.js/extensions/scale/deck.scale.js +155 -0
  111. data/templates/generate/deck.js/extensions/scale/deck.scale.scss +17 -0
  112. data/templates/generate/deck.js/extensions/status/deck.status.css +14 -0
  113. data/templates/generate/deck.js/extensions/status/deck.status.html +6 -0
  114. data/templates/generate/deck.js/extensions/status/deck.status.js +42 -0
  115. data/templates/generate/deck.js/extensions/status/deck.status.scss +16 -0
  116. data/templates/generate/deck.js/support/jquery.1.6.4.min.js +4 -0
  117. data/templates/generate/deck.js/support/modernizr.custom.js +4 -0
  118. data/templates/generate/deck.js/themes/style/neon.css +114 -0
  119. data/templates/generate/deck.js/themes/style/neon.scss +139 -0
  120. data/templates/generate/deck.js/themes/style/swiss.css +75 -0
  121. data/templates/generate/deck.js/themes/style/swiss.scss +91 -0
  122. data/templates/generate/deck.js/themes/style/web-2.0.css +187 -0
  123. data/templates/generate/deck.js/themes/style/web-2.0.scss +214 -0
  124. data/templates/generate/deck.js/themes/transition/fade.css +44 -0
  125. data/templates/generate/deck.js/themes/transition/fade.scss +70 -0
  126. data/templates/generate/deck.js/themes/transition/horizontal-slide.css +79 -0
  127. data/templates/generate/deck.js/themes/transition/horizontal-slide.scss +94 -0
  128. data/templates/generate/deck.js/themes/transition/vertical-slide.css +97 -0
  129. data/templates/generate/deck.js/themes/transition/vertical-slide.scss +116 -0
  130. data/templates/keydown.css.erb +27 -23
  131. metadata +171 -32
  132. data/Gemfile.lock +0 -41
  133. data/templates/generate/css/rocks.css +0 -392
  134. data/templates/generate/css/syntax_highlighting.css +0 -135
  135. data/templates/generate/js/rocks.js +0 -419
  136. data/templates/rocks/index.rhtml +0 -132
  137. data/templates/rocks/slide.rhtml +0 -10
data/.gitignore CHANGED
@@ -3,3 +3,5 @@
3
3
  pkg/*
4
4
  *.gem
5
5
  .bundle
6
+ Gemfile.lock
7
+ binstubs/*
data/.travis.yml ADDED
@@ -0,0 +1,3 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010 Infews LLC
1
+ Copyright (c) 2010, 2011 Infews LLC
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
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. It will be on the configuration page and set as the HTML `<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 [Pygments](http://pygments.org), which must be installed locally to work. All Pygments lexers are supported.
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 a great presentation template
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 &copy; Infews LLC. See LICENSE for details.
184
+ Copyright &copy; Infews LLC. See LICENSE for details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 0.9.0
data/keydown.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "version"
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, HTML5 Rocks, and organic fair trade Bolivian coffee}
13
+ s.description = %q{Bastard child of Slidedown, deck.js and organic fair trade Bolivian coffee}
14
14
 
15
- s.add_dependency 'thor', '>= 0.14.0'
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 "rspec", ">= 2.5.0"
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 'thor'
2
-
3
- module Keydown
4
- class Tasks < Thor
5
- include Thor::Actions
6
-
7
- @@source_root = File.join(File.dirname(__FILE__), '..')
8
-
9
- def self.source_root
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'
@@ -0,0 +1,12 @@
1
+ module Keydown
2
+ module HtmlHelpers
3
+
4
+ def stylesheet(src)
5
+ %Q{<link href="#{src}" rel="stylesheet" type="text/css"/>}
6
+ end
7
+
8
+ def script(src)
9
+ %Q{<script src="#{src}" type="text/javascript"></script>}
10
+ end
11
+ end
12
+ end
@@ -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
- names = ['attribution']
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
- names.join(' ')
47
+ ['attribution', background_image[:service]].join(' ')
56
48
  end
57
49
 
58
50
  def to_html
59
- require 'erb'
51
+ require 'tilt'
60
52
  require 'rdiscount'
61
53
 
62
- html_content = RDiscount.new(@content).to_html
63
- template = File.new(File.join(Tasks.template_dir, 'slide.rhtml'))
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
- ERB.new(template.read).result(binding)
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
- lang = code_block[:lang]
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
- tokens = CodeRay.scan code, lang.to_sym
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, tokens.html.div)
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 'erb'
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
- template = File.new(File.join(Tasks.template_dir, 'index.rhtml'))
27
- ERB.new(template.read).result(binding)
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
@@ -0,0 +1,5 @@
1
+ require 'thor'
2
+
3
+ require 'keydown/tasks/base'
4
+ require 'keydown/tasks/generate'
5
+ require 'keydown/tasks/slides'
@@ -0,0 +1,15 @@
1
+ module Keydown
2
+ class Tasks < Thor
3
+ include Thor::Actions
4
+
5
+ @@source_root = File.join(File.dirname(__FILE__), '..', '..', '..')
6
+
7
+ def self.source_root
8
+ @@source_root
9
+ end
10
+
11
+ def self.template_dir
12
+ @@template_dir
13
+ end
14
+ end
15
+ end
@@ -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
@@ -12,7 +12,7 @@ module Keydown
12
12
  return
13
13
  end
14
14
 
15
- @@template_dir = File.join(Keydown::Tasks.source_root, 'templates', 'rocks')
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
@@ -1,3 +1,3 @@
1
1
  module Keydown
2
- VERSION = "0.7.1"
2
+ VERSION = "0.9.0"
3
3
  end
@@ -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
@@ -1,11 +1,11 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
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', 'rocks')
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 "should colorize the code fragments" do
52
- @doc.css('.CodeRay').length.should == 1
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('div.slide')[0]
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('div.slide')[0]
333
+ @slide_container = @doc.css('section.slide')[0]
322
334
  end
323
335
 
324
336
  it_should_behave_like "generating HTML"