magic_reveal 2.4.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/Guardfile +5 -0
- data/LICENSE.txt +22 -0
- data/README.md +88 -0
- data/Rakefile +10 -0
- data/bin/magic-reveal +7 -0
- data/lib/magic_reveal/app.rb +50 -0
- data/lib/magic_reveal/cli/options.rb +30 -0
- data/lib/magic_reveal/cli.rb +43 -0
- data/lib/magic_reveal/conductor.rb +51 -0
- data/lib/magic_reveal/creator.rb +49 -0
- data/lib/magic_reveal/identifier.rb +30 -0
- data/lib/magic_reveal/index_libber.rb +37 -0
- data/lib/magic_reveal/reveal_js_fetcher.rb +31 -0
- data/lib/magic_reveal/slide_renderer.rb +59 -0
- data/lib/magic_reveal/template-config.ru +2 -0
- data/lib/magic_reveal/version.rb +4 -0
- data/lib/magic_reveal.rb +7 -0
- data/magic-reveal.gemspec +45 -0
- data/spec/data/wrapped.zip +0 -0
- data/spec/magic_reveal/app_spec.rb +6 -0
- data/spec/magic_reveal/cli/options_spec.rb +34 -0
- data/spec/magic_reveal/cli_spec.rb +58 -0
- data/spec/magic_reveal/conductor_spec.rb +44 -0
- data/spec/magic_reveal/creator_spec.rb +56 -0
- data/spec/magic_reveal/identifier_spec.rb +98 -0
- data/spec/magic_reveal/index_libber_spec.rb +43 -0
- data/spec/magic_reveal/reveal_js_fetcher_spec.rb +45 -0
- data/spec/magic_reveal/slide_renderer_spec.rb +124 -0
- data/spec/magic_reveal_spec.rb +8 -0
- data/spec/spec_helper.rb +23 -0
- metadata +329 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5d5c1f685fc06356224773be6c761b559d20dcb7
|
4
|
+
data.tar.gz: f6061b79e83be0baf5637ee4957045881c3bf3cf
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e638920d89ab90ffcea767da5676b43c77954a93ee68bd42ad3ff86ff501319a91b60ca693e37e7b3ae9cac918d9f40d7b4e02e01c532eb0527a92bc1a921a2f
|
7
|
+
data.tar.gz: 4ba1e2768b60d18b3a54ad24cc8ab858ba4db57d210a61f039c78a46de6d2c527d94e90403a7e27a16a41c466952a12e684ffe657a92488a16d0ae3679f6f5ac
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Guardfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Christian Höltje
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
# Magic Reveal
|
2
|
+
|
3
|
+
Magic Reveal makes creating presentations easy and fun.
|
4
|
+
|
5
|
+
See it in action at the [demo/tutorial](http://docwhat.github.io/magic_reveal/)
|
6
|
+
|
7
|
+
[![Build Status](https://secure.travis-ci.org/docwhat/magic_reveal.png?branch=master)](http://travis-ci.org/docwhat/magic_reveal)
|
8
|
+
[![Dependencies](https://gemnasium.com/docwhat/magic_reveal.png?branch=master)](https://gemnasium.com/docwhat/magic_reveal)
|
9
|
+
[![Coverage Status](https://coveralls.io/repos/docwhat/magic_reveal/badge.png?branch=master)](https://coveralls.io/r/docwhat/magic_reveal)
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
Use `gem` to install magic_reveal:
|
14
|
+
|
15
|
+
$ gem install magic_reveal
|
16
|
+
|
17
|
+
The version numbers are the based on the versions of
|
18
|
+
[reveal.js](https://github.com/hakimel/reveal.js). The last number is
|
19
|
+
the revision specific to Magic Reveal.
|
20
|
+
|
21
|
+
### Requirements
|
22
|
+
|
23
|
+
* Ruby 1.9.2 or newer
|
24
|
+
* A recent version of [Bundler](http://bundler.io/)
|
25
|
+
|
26
|
+
<br/>
|
27
|
+
Magic Reveal *may* work on non-posix systems, but I make no promises. Pull Requests are
|
28
|
+
welcome.
|
29
|
+
|
30
|
+
## Usage
|
31
|
+
|
32
|
+
To get started:
|
33
|
+
|
34
|
+
$ magic-reveal new my-presentation
|
35
|
+
$ cd my-presentation
|
36
|
+
$ vim slides.md
|
37
|
+
|
38
|
+
Feel free to replace [vim](http://vim.org/) with the editor of your choice.
|
39
|
+
|
40
|
+
### Viewing the presentation
|
41
|
+
|
42
|
+
$ rackup
|
43
|
+
|
44
|
+
Then open your browser to [`http://localhost:9292`](http://localhost:9292).
|
45
|
+
|
46
|
+
### The format of slides.md
|
47
|
+
|
48
|
+
Magic Reveal uses [github-flavored
|
49
|
+
markdown](https://help.github.com/articles/github-flavored-markdown)
|
50
|
+
as much as practical.
|
51
|
+
|
52
|
+
#### External code files
|
53
|
+
|
54
|
+
If you want your source code to be in files outside your `slides.md`, no problem!
|
55
|
+
|
56
|
+
To load source from `example.rb`, for example, then use `@@source = <filename>`
|
57
|
+
as the body of the code section.
|
58
|
+
|
59
|
+
For example:
|
60
|
+
|
61
|
+
```
|
62
|
+
`@@source = example.rb`
|
63
|
+
```
|
64
|
+
|
65
|
+
This works with triple back-quote blocks and four-space indented blocks sections as well.
|
66
|
+
|
67
|
+
## Development
|
68
|
+
|
69
|
+
There is a full [RSpec](http://rspec.info/) test suite. Make sure you
|
70
|
+
write tests before you continue.
|
71
|
+
|
72
|
+
For the places where I don't have tests because I couldn't figure it out,
|
73
|
+
please help!
|
74
|
+
|
75
|
+
### Future plans
|
76
|
+
|
77
|
+
* Generate static sites via the `magic-reveal` command line tool
|
78
|
+
* A configuration file, for using plugins, etc.
|
79
|
+
|
80
|
+
## Contributing
|
81
|
+
|
82
|
+
(because you know it could be better)
|
83
|
+
|
84
|
+
1. [Fork it](https://github.com/docwhat/magic_reveal)
|
85
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
86
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
87
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
88
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
data/bin/magic-reveal
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'redcarpet'
|
2
|
+
require 'sinatra/base'
|
3
|
+
require 'magic_reveal/slide_renderer'
|
4
|
+
require 'magic_reveal/index_libber'
|
5
|
+
|
6
|
+
begin
|
7
|
+
require 'better_errors'
|
8
|
+
HAS_BETTER_ERRORS = true
|
9
|
+
rescue LoadError
|
10
|
+
HAS_BETTER_ERRORS = false
|
11
|
+
end
|
12
|
+
|
13
|
+
module MagicReveal
|
14
|
+
class App < Sinatra::Base
|
15
|
+
if HAS_BETTER_ERRORS
|
16
|
+
configure :development do
|
17
|
+
use BetterErrors::Middleware
|
18
|
+
BetterErrors.application_root = File.expand_path('../../..', __FILE__)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
set :public_folder, File.expand_path('reveal.js', Dir.getwd)
|
23
|
+
|
24
|
+
helpers do
|
25
|
+
def markdown
|
26
|
+
@markdown ||= Redcarpet::Markdown.new(
|
27
|
+
MagicReveal::SlideRenderer.new,
|
28
|
+
:space_after_headers => true,
|
29
|
+
:filter_html => true,
|
30
|
+
:fenced_code_blocks => true,
|
31
|
+
:no_intra_emphasis => true,
|
32
|
+
)
|
33
|
+
end
|
34
|
+
|
35
|
+
def index_html_path
|
36
|
+
@index_html_path ||= Pathname.pwd + 'reveal.js' + 'index.html'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
get '/' do
|
41
|
+
slides = markdown.render File.read('slides.md')
|
42
|
+
libber = MagicReveal::IndexLibber.new index_html_path.read
|
43
|
+
libber.update_author MagicReveal::Identifier.name
|
44
|
+
libber.update_description "A Magical Presentiation"
|
45
|
+
libber.update_slides slides
|
46
|
+
libber.to_s
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module MagicReveal
|
2
|
+
class Cli
|
3
|
+
class Options
|
4
|
+
attr_accessor(
|
5
|
+
:command,
|
6
|
+
:project,
|
7
|
+
)
|
8
|
+
|
9
|
+
def program_name
|
10
|
+
@program_name ||= File.basename($0)
|
11
|
+
end
|
12
|
+
|
13
|
+
def parse args
|
14
|
+
case args.first
|
15
|
+
when 'new'
|
16
|
+
if args.length != 2
|
17
|
+
@command = :help
|
18
|
+
else
|
19
|
+
@command = :new
|
20
|
+
@project = args[1]
|
21
|
+
end
|
22
|
+
when 'help'
|
23
|
+
@command = :help
|
24
|
+
else
|
25
|
+
@command = :help
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'forwardable'
|
2
|
+
|
3
|
+
require 'magic_reveal/cli/options'
|
4
|
+
require 'magic_reveal/creator'
|
5
|
+
|
6
|
+
module MagicReveal
|
7
|
+
class Cli
|
8
|
+
extend Forwardable
|
9
|
+
|
10
|
+
def_delegator :options, :program_name
|
11
|
+
def_delegator :options, :command
|
12
|
+
def_delegator :options, :project
|
13
|
+
|
14
|
+
attr_writer :creator
|
15
|
+
|
16
|
+
# Helper method
|
17
|
+
def self.run args=ARGV
|
18
|
+
self.new.run args
|
19
|
+
end
|
20
|
+
|
21
|
+
# Action Classes
|
22
|
+
def creator
|
23
|
+
@creator ||= Creator.new(Dir.getwd)
|
24
|
+
end
|
25
|
+
|
26
|
+
def options
|
27
|
+
@options ||= Options.new
|
28
|
+
end
|
29
|
+
|
30
|
+
def run args=ARGV
|
31
|
+
options.parse args
|
32
|
+
|
33
|
+
case command
|
34
|
+
when :new
|
35
|
+
creator.create_project(project)
|
36
|
+
else
|
37
|
+
puts "Usage: #{program_name}"
|
38
|
+
puts
|
39
|
+
puts "This isn't written yet."
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'magic_reveal'
|
2
|
+
require 'net/https'
|
3
|
+
require 'archive/zip'
|
4
|
+
require 'pathname'
|
5
|
+
require 'fileutils'
|
6
|
+
|
7
|
+
module MagicReveal
|
8
|
+
# Fetchs a github zip file and unpacks it for use.
|
9
|
+
class Conductor
|
10
|
+
attr_reader :url, :enable_warnings
|
11
|
+
|
12
|
+
def initialize url=nil
|
13
|
+
self.url = url unless url.nil?
|
14
|
+
end
|
15
|
+
|
16
|
+
def url= url
|
17
|
+
@url = URI.parse url
|
18
|
+
end
|
19
|
+
|
20
|
+
def fetch save_path, limit = 5
|
21
|
+
raise TooManyRedirects if limit <= 0
|
22
|
+
save_path = Pathname.new save_path
|
23
|
+
|
24
|
+
request = Net::HTTP::Get.new url.path
|
25
|
+
response = Net::HTTP.start(url.host, url.port, use_ssl: url.scheme == 'https') { |http| http.request(request) }
|
26
|
+
|
27
|
+
case response
|
28
|
+
when Net::HTTPSuccess then
|
29
|
+
save_path.open('w') { |fp| fp.write response.body }
|
30
|
+
when Net::HTTPRedirection then
|
31
|
+
self.url = response['location']
|
32
|
+
warn "redirected to #{url}" if enable_warnings
|
33
|
+
fetch(save_path, limit - 1)
|
34
|
+
else
|
35
|
+
raise Error, "Huh? #{response.value}"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def unpack zip_file, directory
|
40
|
+
directory = Pathname.new directory
|
41
|
+
raise Error, "Directory '#{directory}' already exists." if directory.exist?
|
42
|
+
|
43
|
+
Archive::Zip.extract zip_file.to_s, directory.to_s
|
44
|
+
|
45
|
+
# Unwrap the outer-most unzipped directory.
|
46
|
+
wrapper_dir = directory.children.first
|
47
|
+
wrapper_dir.children.each { |c| c.rename(directory + c.basename) }
|
48
|
+
wrapper_dir.rmdir
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
require 'magic_reveal/version'
|
5
|
+
require 'magic_reveal/reveal_js_fetcher'
|
6
|
+
|
7
|
+
module MagicReveal
|
8
|
+
class Creator
|
9
|
+
attr_reader :directory
|
10
|
+
attr_writer :reveal_js_fetcher, :template_slides, :template_config_ru
|
11
|
+
|
12
|
+
def initialize(directory)
|
13
|
+
@directory = Pathname.new directory
|
14
|
+
end
|
15
|
+
|
16
|
+
def reveal_js_fetcher
|
17
|
+
@reveal_js_fetcher ||= RevealJsFetcher.new
|
18
|
+
end
|
19
|
+
|
20
|
+
def template_slides
|
21
|
+
@template_slides ||= Pathname.new(__FILE__).dirname.dirname.dirname + 'README.md'
|
22
|
+
end
|
23
|
+
|
24
|
+
def template_config_ru
|
25
|
+
@template_config_ru ||= Pathname.new(__FILE__).dirname + 'template-config.ru'
|
26
|
+
end
|
27
|
+
|
28
|
+
def create_project(project)
|
29
|
+
top_dir = directory + project
|
30
|
+
reveal_dir = top_dir + 'reveal.js'
|
31
|
+
gemfile = top_dir + 'Gemfile'
|
32
|
+
|
33
|
+
top_dir.mkdir
|
34
|
+
|
35
|
+
reveal_js_fetcher.save_to(reveal_dir)
|
36
|
+
FileUtils.copy_file template_slides.to_s, (top_dir + 'slides.md').to_s
|
37
|
+
FileUtils.copy_file template_config_ru.to_s, (top_dir + 'config.ru').to_s
|
38
|
+
gemfile.open('w') do |f|
|
39
|
+
f.puts "source 'https://rubygems.org'"
|
40
|
+
f.puts
|
41
|
+
f.puts "gem 'magic_reveal', '~> #{VERSION}'"
|
42
|
+
end
|
43
|
+
|
44
|
+
Dir.chdir(top_dir.to_s) do
|
45
|
+
system 'bundle install'
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'sys/admin'
|
2
|
+
|
3
|
+
module MagicReveal
|
4
|
+
class Identifier
|
5
|
+
attr_accessor :sys_admin
|
6
|
+
|
7
|
+
def initialize sys_admin=nil
|
8
|
+
@sys_admin = sys_admin || Sys::Admin
|
9
|
+
end
|
10
|
+
|
11
|
+
# Alias to make life easier.
|
12
|
+
def self.name
|
13
|
+
new.name
|
14
|
+
end
|
15
|
+
|
16
|
+
def name
|
17
|
+
login = sys_admin.get_login
|
18
|
+
user = sys_admin.get_user login
|
19
|
+
|
20
|
+
return user.full_name if user.respond_to? :full_name
|
21
|
+
gecos = user.gecos
|
22
|
+
name = gecos.split(/\s*,\s*/).first
|
23
|
+
if name.nil? || name.empty?
|
24
|
+
return login
|
25
|
+
else
|
26
|
+
return name
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'nokogiri'
|
3
|
+
require 'magic_reveal/identifier'
|
4
|
+
|
5
|
+
module MagicReveal
|
6
|
+
# Mad Libs with Reveal.JS's index.html
|
7
|
+
class IndexLibber
|
8
|
+
attr_reader :html
|
9
|
+
|
10
|
+
def initialize html_text
|
11
|
+
@html = Nokogiri::HTML(html_text, &:noblanks)
|
12
|
+
end
|
13
|
+
|
14
|
+
def update_author author
|
15
|
+
if meta = html.at_xpath("//meta[@name='author']")
|
16
|
+
meta.set_attribute('content', author)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def update_description description
|
21
|
+
if meta = html.at_xpath("//meta[@name='description']")
|
22
|
+
meta.set_attribute('content', description)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def update_slides slides_text
|
27
|
+
slides = Nokogiri::HTML(slides_text).css('section')
|
28
|
+
if container = html.at_css('div.reveal div.slides')
|
29
|
+
container.children = slides
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def to_s
|
34
|
+
html.to_html
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'magic_reveal/version'
|
2
|
+
require 'magic_reveal/conductor'
|
3
|
+
|
4
|
+
module MagicReveal
|
5
|
+
class RevealJsFetcher
|
6
|
+
attr_reader :version
|
7
|
+
attr_writer :conductor
|
8
|
+
|
9
|
+
def initialize(version=REVEAL_JS_VERSION)
|
10
|
+
@version = version
|
11
|
+
end
|
12
|
+
|
13
|
+
def zip_url
|
14
|
+
"https://github.com/hakimel/reveal.js/archive/#{@version}.zip"
|
15
|
+
end
|
16
|
+
|
17
|
+
def conductor
|
18
|
+
@conductor ||= Conductor.new zip_url
|
19
|
+
end
|
20
|
+
|
21
|
+
def save_to(reveal_dir)
|
22
|
+
reveal_dir = Pathname.new reveal_dir
|
23
|
+
|
24
|
+
Dir.mktmpdir do |tmpdir|
|
25
|
+
zipfile = tmpdir + "fetching-#{REVEAL_JS_VERSION}.zip"
|
26
|
+
conductor.fetch(zipfile)
|
27
|
+
conductor.unpack(zipfile, reveal_dir)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'redcarpet'
|
2
|
+
require 'cgi'
|
3
|
+
|
4
|
+
require 'magic_reveal/version'
|
5
|
+
|
6
|
+
module MagicReveal
|
7
|
+
class SlideRenderer < Redcarpet::Render::HTML
|
8
|
+
include Redcarpet::Render::SmartyPants
|
9
|
+
attr_accessor :has_shown_slides
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
super(no_styles: true)
|
13
|
+
end
|
14
|
+
|
15
|
+
def doc_header
|
16
|
+
@has_shown_slides = false
|
17
|
+
"<!-- generated by magic_reveal v#{VERSION} on #{Time.now} -->"
|
18
|
+
end
|
19
|
+
|
20
|
+
def doc_footer
|
21
|
+
has_shown_slides ? '</section>' : ''
|
22
|
+
end
|
23
|
+
|
24
|
+
def header(text, header_level)
|
25
|
+
output = []
|
26
|
+
if has_shown_slides
|
27
|
+
output << "</section>"
|
28
|
+
else
|
29
|
+
@has_shown_slides = true
|
30
|
+
end
|
31
|
+
output << "<section>"
|
32
|
+
output << "<h#{header_level}>#{text}</h#{header_level}>"
|
33
|
+
output.join("\n")
|
34
|
+
end
|
35
|
+
|
36
|
+
def prepare_code(code)
|
37
|
+
if code =~ %r{\A\s*@@source\s*=\s*(.*)\s*\Z}
|
38
|
+
File.read($1)
|
39
|
+
else
|
40
|
+
code
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def block_code(code, language)
|
45
|
+
output = []
|
46
|
+
if language
|
47
|
+
output << "<pre class=\"#{language}\">"
|
48
|
+
else
|
49
|
+
output << "<pre>"
|
50
|
+
end
|
51
|
+
output << "<code>"
|
52
|
+
|
53
|
+
output << CGI::escapeHTML(prepare_code code)
|
54
|
+
output << "</code>"
|
55
|
+
output << "</pre>"
|
56
|
+
output.join("")
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
data/lib/magic_reveal.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'magic_reveal/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "magic_reveal"
|
8
|
+
spec.version = MagicReveal::VERSION
|
9
|
+
spec.authors = ["Christian Höltje"]
|
10
|
+
spec.email = ["docwhat@gerf.org"]
|
11
|
+
spec.description = %q{Create presentations with markdown and ease!}
|
12
|
+
spec.summary = %q{Create presentations using markdown and reveal.js}
|
13
|
+
spec.homepage = "https://github.com/docwhat/magic_reveal"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.required_ruby_version = '>= 1.9.2'
|
22
|
+
|
23
|
+
spec.add_dependency "sinatra", "~> 1.4"
|
24
|
+
spec.add_dependency "redcarpet", "~> 3.0"
|
25
|
+
spec.add_dependency "archive-zip", "~> 0.6"
|
26
|
+
spec.add_dependency "sys-admin", "~> 1.6"
|
27
|
+
spec.add_dependency "nokogiri", "~> 1.5"
|
28
|
+
|
29
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
30
|
+
spec.add_development_dependency "rake"
|
31
|
+
spec.add_development_dependency "guard-rspec", "~> 3.0"
|
32
|
+
spec.add_development_dependency "rspec", "~> 2.14"
|
33
|
+
spec.add_development_dependency "coveralls", "~> 0.6"
|
34
|
+
spec.add_development_dependency "better_errors"
|
35
|
+
spec.add_development_dependency "binding_of_caller"
|
36
|
+
|
37
|
+
#For detecting changes in the filesystem
|
38
|
+
spec.add_development_dependency 'rb-inotify'
|
39
|
+
spec.add_development_dependency 'rb-fsevent'
|
40
|
+
spec.add_development_dependency 'rb-fchange'
|
41
|
+
|
42
|
+
#For displaying notices
|
43
|
+
spec.add_development_dependency 'terminal-notifier-guard'
|
44
|
+
spec.add_development_dependency 'libnotify'
|
45
|
+
end
|
Binary file
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'magic_reveal/cli/options'
|
3
|
+
|
4
|
+
describe MagicReveal::Cli::Options do
|
5
|
+
describe ".parse" do
|
6
|
+
before { subject.parse args }
|
7
|
+
|
8
|
+
context "given 'new <project>'" do
|
9
|
+
let(:args) { %w{new someproject} }
|
10
|
+
|
11
|
+
its(:command) { should be(:new) }
|
12
|
+
its(:project) { should eq('someproject') }
|
13
|
+
end
|
14
|
+
|
15
|
+
context "given 'new <project> extrajunk'" do
|
16
|
+
let(:args) { %w{new someproject extrajunk} }
|
17
|
+
|
18
|
+
its(:command) { should be(:help) }
|
19
|
+
its(:project) { should be_nil }
|
20
|
+
end
|
21
|
+
|
22
|
+
context "given 'help'" do
|
23
|
+
let(:args) { %w{help} }
|
24
|
+
|
25
|
+
its(:command) { should be(:help) }
|
26
|
+
end
|
27
|
+
|
28
|
+
context "given no arguments" do
|
29
|
+
let(:args) { [] }
|
30
|
+
|
31
|
+
its(:command) { should be(:help) }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|