reveal-ck 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. data/.gitmodules +3 -0
  2. data/.rspec +2 -0
  3. data/.rvmrc +16 -0
  4. data/.travis.yml +4 -0
  5. data/Gemfile +15 -0
  6. data/Gemfile.lock +52 -0
  7. data/LICENSE +20 -0
  8. data/README.md +103 -0
  9. data/Rakefile +16 -0
  10. data/VERSION +1 -0
  11. data/bin/reveal-ck +46 -0
  12. data/features/data/images/ruby100.png +0 -0
  13. data/features/generate.feature +63 -0
  14. data/features/help.feature +18 -0
  15. data/features/step_definitions/file_management_steps.rb +3 -0
  16. data/features/support/env.rb +15 -0
  17. data/features/support/file_management.rb +16 -0
  18. data/lib/reveal-ck.rb +4 -0
  19. data/lib/reveal-ck/file_slicer.rb +23 -0
  20. data/lib/reveal-ck/file_splicer.rb +39 -0
  21. data/lib/reveal-ck/haml_processor.rb +24 -0
  22. data/lib/reveal-ck/version.rb +4 -0
  23. data/rakelib/cucumber.rake +2 -0
  24. data/rakelib/jeweler.rake +12 -0
  25. data/rakelib/presentation.rake +40 -0
  26. data/rakelib/reveal.rake +15 -0
  27. data/rakelib/rspec.rake +5 -0
  28. data/reveal-ck.gemspec +152 -0
  29. data/reveal.js/LICENSE +19 -0
  30. data/reveal.js/README.md +374 -0
  31. data/reveal.js/css/print/paper.css +176 -0
  32. data/reveal.js/css/print/pdf.css +160 -0
  33. data/reveal.js/css/reveal.css +1312 -0
  34. data/reveal.js/css/reveal.min.css +7 -0
  35. data/reveal.js/css/shaders/tile-flip.fs +64 -0
  36. data/reveal.js/css/shaders/tile-flip.vs +141 -0
  37. data/reveal.js/css/theme/README.md +25 -0
  38. data/reveal.js/css/theme/beige.css +163 -0
  39. data/reveal.js/css/theme/default.css +163 -0
  40. data/reveal.js/css/theme/night.css +150 -0
  41. data/reveal.js/css/theme/serif.css +150 -0
  42. data/reveal.js/css/theme/simple.css +152 -0
  43. data/reveal.js/css/theme/sky.css +156 -0
  44. data/reveal.js/css/theme/source/beige.scss +50 -0
  45. data/reveal.js/css/theme/source/default.scss +42 -0
  46. data/reveal.js/css/theme/source/night.scss +35 -0
  47. data/reveal.js/css/theme/source/serif.scss +33 -0
  48. data/reveal.js/css/theme/source/simple.scss +38 -0
  49. data/reveal.js/css/theme/source/sky.scss +41 -0
  50. data/reveal.js/css/theme/template/mixins.scss +29 -0
  51. data/reveal.js/css/theme/template/settings.scss +33 -0
  52. data/reveal.js/css/theme/template/theme.scss +163 -0
  53. data/reveal.js/grunt.js +84 -0
  54. data/reveal.js/index.html +375 -0
  55. data/reveal.js/js/reveal.js +1796 -0
  56. data/reveal.js/js/reveal.min.js +8 -0
  57. data/reveal.js/lib/css/zenburn.css +115 -0
  58. data/reveal.js/lib/font/league_gothic-webfont.eot +0 -0
  59. data/reveal.js/lib/font/league_gothic-webfont.svg +230 -0
  60. data/reveal.js/lib/font/league_gothic-webfont.ttf +0 -0
  61. data/reveal.js/lib/font/league_gothic-webfont.woff +0 -0
  62. data/reveal.js/lib/font/league_gothic_license +2 -0
  63. data/reveal.js/lib/js/classList.js +2 -0
  64. data/reveal.js/lib/js/head.min.js +8 -0
  65. data/reveal.js/lib/js/html5shiv.js +7 -0
  66. data/reveal.js/package.json +31 -0
  67. data/reveal.js/plugin/highlight/highlight.js +9 -0
  68. data/reveal.js/plugin/markdown/markdown.js +37 -0
  69. data/reveal.js/plugin/markdown/showdown.js +62 -0
  70. data/reveal.js/plugin/notes-server/client.js +57 -0
  71. data/reveal.js/plugin/notes-server/index.js +58 -0
  72. data/reveal.js/plugin/notes-server/notes.html +139 -0
  73. data/reveal.js/plugin/notes/notes.html +164 -0
  74. data/reveal.js/plugin/notes/notes.js +98 -0
  75. data/reveal.js/plugin/postmessage/example.html +39 -0
  76. data/reveal.js/plugin/postmessage/postmessage.js +42 -0
  77. data/reveal.js/plugin/print-pdf/print-pdf.js +39 -0
  78. data/reveal.js/plugin/remotes/remotes.js +30 -0
  79. data/reveal.js/plugin/zoom-js/zoom.js +251 -0
  80. data/spec/data/haml/basic.haml +7 -0
  81. data/spec/data/html/converted_basic_haml.html +10 -0
  82. data/spec/data/html/reveal-js-index.html +375 -0
  83. data/spec/data/slicer/after_remove +6 -0
  84. data/spec/data/slicer/before_remove +10 -0
  85. data/spec/data/splicer/abcd +4 -0
  86. data/spec/data/splicer/after_insert +14 -0
  87. data/spec/data/splicer/before_insert +10 -0
  88. data/spec/lib/reveal-ck/file_slicer_spec.rb +42 -0
  89. data/spec/lib/reveal-ck/file_splicer_spec.rb +41 -0
  90. data/spec/lib/reveal-ck/haml_processor_spec.rb +38 -0
  91. data/spec/spec_helper.rb +27 -0
  92. metadata +271 -0
data/.gitmodules ADDED
@@ -0,0 +1,3 @@
1
+ [submodule "reveal.js"]
2
+ path = reveal.js
3
+ url = git://github.com/hakimel/reveal.js.git
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format doc
data/.rvmrc ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env bash
2
+
3
+ environment_id="ruby-1.9.3-p327@reveal-ck"
4
+
5
+ if [[ -d "${rvm_path:-$HOME/.rvm}/environments"
6
+ && -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]]
7
+ then
8
+ \. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
9
+ [[ -s "${rvm_path:-$HOME/.rvm}/hooks/after_use" ]] &&
10
+ \. "${rvm_path:-$HOME/.rvm}/hooks/after_use" || true
11
+ else
12
+ rvm --create "$environment_id" || {
13
+ echo "Failed to create RVM environment '${environment_id}'."
14
+ return 1
15
+ }
16
+ fi
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - "1.9.2"
4
+ - "1.9.3"
data/Gemfile ADDED
@@ -0,0 +1,15 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'haml'
4
+ gem 'gli'
5
+ gem 'rake'
6
+
7
+ # Add dependencies to develop your gem here.
8
+ # Include everything needed to run rake, tests, features, etc.
9
+ group :development do
10
+ gem 'jeweler'
11
+ gem 'rspec'
12
+ gem 'bundler'
13
+ gem 'cucumber'
14
+ gem 'aruba'
15
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,52 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ aruba (0.5.1)
5
+ childprocess (~> 0.3.6)
6
+ cucumber (>= 1.1.1)
7
+ rspec-expectations (>= 2.7.0)
8
+ builder (3.1.4)
9
+ childprocess (0.3.7)
10
+ ffi (~> 1.0, >= 1.0.6)
11
+ cucumber (1.2.1)
12
+ builder (>= 2.1.2)
13
+ diff-lcs (>= 1.1.3)
14
+ gherkin (~> 2.11.0)
15
+ json (>= 1.4.6)
16
+ diff-lcs (1.1.3)
17
+ ffi (1.3.1)
18
+ gherkin (2.11.6)
19
+ json (>= 1.7.6)
20
+ git (1.2.5)
21
+ gli (2.5.4)
22
+ haml (3.1.7)
23
+ jeweler (1.8.4)
24
+ bundler (~> 1.0)
25
+ git (>= 1.2.5)
26
+ rake
27
+ rdoc
28
+ json (1.7.6)
29
+ rake (10.0.3)
30
+ rdoc (3.12)
31
+ json (~> 1.4)
32
+ rspec (2.12.0)
33
+ rspec-core (~> 2.12.0)
34
+ rspec-expectations (~> 2.12.0)
35
+ rspec-mocks (~> 2.12.0)
36
+ rspec-core (2.12.2)
37
+ rspec-expectations (2.12.1)
38
+ diff-lcs (~> 1.1.3)
39
+ rspec-mocks (2.12.1)
40
+
41
+ PLATFORMS
42
+ ruby
43
+
44
+ DEPENDENCIES
45
+ aruba
46
+ bundler
47
+ cucumber
48
+ gli
49
+ haml
50
+ jeweler
51
+ rake
52
+ rspec
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2013 Jed Northridge, http://jednorthridge.com
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,103 @@
1
+ # reveal-ck: a [reveal.js](http://lab.hakim.se/reveal-js/) construction kit
2
+
3
+ ## Overview
4
+
5
+ The goal of this project is let you quickly author
6
+ [reveal.js](http://lab.hakim.se/reveal-js/) presentations.
7
+
8
+ It enables you to author reveal.js-aware-[haml](http://haml.info/) that
9
+ can conveniently be transformed into slides.
10
+
11
+ The hope is that you will be able to leverage all of the power,
12
+ beauty, and functionality that comes from reveal.js while focusing
13
+ entirely on the actual content and ideas you are trying to get across.
14
+
15
+ This content will usually take the form of:
16
+
17
+ * A file containing your slides (```slides.haml```)
18
+ * A directory containing any images you'd like to reference relatively
19
+ (```images```).
20
+
21
+ And, in return for this, you will be able to create slides that can be
22
+ placed anywhere on the web (or kept locally). As with all
23
+ [reveal.js](http://lab.hakim.se/reveal-js/) presentations, you can
24
+ show these to other people on an iPhone, iPad, or present them in your
25
+ browser.
26
+
27
+ Here's an example of the inputs you'd provide:
28
+ https://github.com/jedcn/talk-learning-with-tools
29
+
30
+ Here's an example of the output you'd get: Coming Soon
31
+
32
+ For a full sampling of everything
33
+ [reveal.js](http://lab.hakim.se/reveal-js/) can do, take a look at the
34
+ [live demo](http://lab.hakim.se/reveal-js/).
35
+
36
+ ## Getting Started
37
+
38
+ At present, we assume you've got a functional Ruby 1.9.x environment
39
+ up and running.
40
+
41
+ If that's the case, try the following:
42
+
43
+ * clone this project
44
+ * run a ```bundle```
45
+ * run ```reveal-ck```
46
+
47
+ At this point, the sample ```slides.haml``` that came with the project
48
+ will be transformed into a set of slides. You can see the result by
49
+ opening up ```slides/index.html``` in your browser.
50
+
51
+ If you've made it this far, you've got the basic basic functionality
52
+ up and running.
53
+
54
+ ## Authoring Slides
55
+
56
+ Now that you are assured of basic functionality, start making changes
57
+ and customizing ```slides.haml```. Once you've made a change you'd
58
+ like to see, re-run ```reveal-ck``` and then re-open (or refresh) ```slides/index.html```
59
+
60
+ [reveal.js](http://lab.hakim.se/reveal-js/) has a great
61
+ [live demo](http://lab.hakim.se/reveal-js/), and if you take a look at
62
+ the source in the demo, you can get up and running quickly with things
63
+ that can be placed into your ```slides.haml```.
64
+
65
+ ## Why not just clone reveal.js?
66
+
67
+ Or why not use http://www.rvl.io/ which offers a WYSIWYG experience?
68
+
69
+ You can! For sure.
70
+
71
+ The whole reveal.js offering is great.
72
+
73
+ If reveal-ck's approach is too contrived or doesn't warrant the setup
74
+ time, skip it!
75
+
76
+ ## Then.. why would anyone use reveal-ck?
77
+
78
+ The thought behind this project to help you focus on what *you* want
79
+ to say.
80
+
81
+ For me, focusing becomes easier and my thoughts clearer when I reduce
82
+ the list of slides to a single file (```slides.haml```). It only
83
+ contains the slide content I am presenting and there's minimal markup.
84
+
85
+ HAML isn't the most readable thing (say, compared to markdown), but it
86
+ is decent and sharing or reviewing something like ```slides.haml``` is
87
+ easier than reviewing the final presentation:
88
+
89
+ * If you look at the presentation in a browser, you can't scan all of
90
+ the slides at once. You need to visit them. If you're looking at
91
+ ```slides.haml``` you can quickly scan through 30+ slides.
92
+
93
+ * If you look at the html behind the presentation (say, view source),
94
+ there's a bunch of stuff that makes the magic happen: styles,
95
+ javascript, etc.
96
+
97
+ Finally, if you track your slides in a system like git, you can get
98
+ meaningful diffs between versions of ```slides.haml```. This is
99
+ slightly easier than if you track the generated presentation.
100
+
101
+ In the end, the presentation framework,
102
+ [reveal.js](http://lab.hakim.se/reveal-js/), can make things pretty,
103
+ but only you can make a presentation that is worthwhile.
data/Rakefile ADDED
@@ -0,0 +1,16 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+
13
+ require 'rake'
14
+ require 'rake/clean'
15
+ require_relative 'lib/reveal-ck'
16
+ task :default => [ :spec, :cucumber ]
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
data/bin/reveal-ck ADDED
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env ruby
2
+ require 'gli'
3
+ require 'reveal-ck'
4
+
5
+ # Setup rake and load needed parts of rakelib so that rake tasks can be
6
+ # invoked programmatically
7
+ require 'rake'
8
+ rakelib = File.expand_path(File.join(File.dirname(__FILE__), '..', 'rakelib'))
9
+ load File.join(rakelib, 'presentation.rake')
10
+
11
+ include GLI::App
12
+
13
+ program_desc 'A reveal.js construction kit'
14
+
15
+ version RevealCK::VERSION
16
+
17
+ desc 'Generate reveal.js slides'
18
+ arg_name 'Tranforms your slides.haml into a presentation'
19
+ command :generate do |c|
20
+ c.action do |global_options,options,args|
21
+ Rake::Task['presentation'].invoke
22
+ end
23
+ end
24
+
25
+ pre do |global,command,options,args|
26
+ # Pre logic here
27
+ # Return true to proceed; false to abort and not call the
28
+ # chosen command
29
+ # Use skips_pre before a command to skip this block
30
+ # on that command only
31
+ true
32
+ end
33
+
34
+ post do |global,command,options,args|
35
+ # Post logic here
36
+ # Use skips_post before a command to skip this
37
+ # block on that command only
38
+ end
39
+
40
+ on_error do |exception|
41
+ # Error logic here
42
+ # return false to skip default error handling
43
+ true
44
+ end
45
+
46
+ exit run(ARGV)
Binary file
@@ -0,0 +1,63 @@
1
+ Feature: Generate slides
2
+
3
+ In order to easily generate reveal.js presentations
4
+ As a user of reveal-ck
5
+ I want to use the "reveal-ck generate" command
6
+
7
+ Scenario: Generating basic slides
8
+ Given a file named "slides.haml" with:
9
+ """
10
+ %section
11
+ %h1
12
+ Made with RevealCK
13
+ %p.small
14
+ oh yeah!
15
+ """
16
+ When I run `reveal-ck generate`
17
+ Then the exit status should be 0
18
+ And the following files should exist:
19
+ | slides.html |
20
+ | slides/index.html |
21
+ And the file "slides.html" should contain exactly:
22
+ """
23
+ <section>
24
+ <h1>
25
+ Made with RevealCK
26
+ </h1>
27
+ <p class='small'>
28
+ oh yeah!
29
+ </p>
30
+ </section>
31
+
32
+ """
33
+ And the file "slides/index.html" should contain:
34
+ """
35
+ <section>
36
+ <h1>
37
+ Made with RevealCK
38
+ </h1>
39
+ <p class='small'>
40
+ oh yeah!
41
+ </p>
42
+ </section>
43
+ """
44
+
45
+ Scenario: Generating slides with images
46
+ Given a file named "images/ruby100.png" that's a copy of "data/images/ruby100.png"
47
+ And a file named "slides.haml" with:
48
+ """
49
+ %section
50
+ %img{ alt: 'Ruby Logo', src: 'images/ruby100.png' }
51
+ """
52
+ When I run `reveal-ck generate`
53
+ Then the exit status should be 0
54
+ And the following files should exist:
55
+ | slides.html |
56
+ | slides/index.html |
57
+ | slides/images/ruby100.png |
58
+ And the file "slides/index.html" should contain:
59
+ """
60
+ <section>
61
+ <img alt='Ruby Logo' src='images/ruby100.png' />
62
+ </section>
63
+ """
@@ -0,0 +1,18 @@
1
+ Feature: Getting Command Line Help
2
+
3
+ reveal-ck provides general command line help to a user so that she
4
+ understands what it does and is aware of the commands and options.
5
+
6
+ Scenario: Show general help if reveal-ck is run without options
7
+ When I run `reveal-ck`
8
+ Then it should pass with:
9
+ """
10
+ help - Shows a list of commands or help for one command
11
+ """
12
+
13
+ Scenario: Show general help if reveal-ck is run with --help
14
+ When I run `reveal-ck --help`
15
+ Then it should pass with:
16
+ """
17
+ help - Shows a list of commands or help for one command
18
+ """
@@ -0,0 +1,3 @@
1
+ Given /^a file named "(.*?)" that's a copy of "(.*?)"$/ do |dest, src|
2
+ copy_file_under_features src, dest
3
+ end
@@ -0,0 +1,15 @@
1
+ require 'aruba/cucumber'
2
+
3
+ ENV['PATH'] = "#{File.expand_path(File.dirname(__FILE__) + '/../../bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
4
+ LIB_DIR = File.join(File.expand_path(File.dirname(__FILE__)),'..','..','lib')
5
+
6
+ Before do
7
+ # Using "announce" causes massive warnings on 1.9.2
8
+ @puts = true
9
+ @original_rubylib = ENV['RUBYLIB']
10
+ ENV['RUBYLIB'] = LIB_DIR + File::PATH_SEPARATOR + ENV['RUBYLIB'].to_s
11
+ end
12
+
13
+ After do
14
+ ENV['RUBYLIB'] = @original_rubylib
15
+ end
@@ -0,0 +1,16 @@
1
+ # Absolute path of reveal-ck/features
2
+ def features_dir
3
+ File.expand_path(File.join(File.dirname(__FILE__), '..'))
4
+ end
5
+
6
+ # Support for easily copying any file underneath features to a new
7
+ # location. Presumed to be helpful for copying around test data stored
8
+ # at reveal-ck/features/data.
9
+ def copy_file_under_features(rel_features_file, dest_file)
10
+ abs_features_file = File.join features_dir, rel_features_file
11
+ in_current_dir do
12
+ dest_dir = File.dirname dest_file
13
+ FileUtils.mkdir_p(dest_dir) unless File.directory?(dest_dir)
14
+ FileUtils.cp abs_features_file, dest_dir
15
+ end
16
+ end
data/lib/reveal-ck.rb ADDED
@@ -0,0 +1,4 @@
1
+ require_relative 'reveal-ck/version'
2
+ require_relative 'reveal-ck/file_slicer'
3
+ require_relative 'reveal-ck/file_splicer'
4
+ require_relative 'reveal-ck/haml_processor'
@@ -0,0 +1,23 @@
1
+ class FileSlicer
2
+
3
+ def self.remove!(path, range)
4
+ slice_file = if File.exists? path
5
+ path
6
+ else
7
+ File.expand_path(File.join(Dir.pwd, path))
8
+ end
9
+ lines = File.open(slice_file).readlines
10
+ slicer = FileSlicer.new lines
11
+ sliced_lines = slicer.remove range
12
+ File.open(slice_file, 'w') { |f| f << sliced_lines.join }
13
+ end
14
+
15
+ def initialize(lines)
16
+ @lines = lines
17
+ end
18
+
19
+ def remove(range)
20
+ @lines.select.with_index { |line, index| ! range.cover? index }
21
+ end
22
+
23
+ end