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.
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"