jekyll_reveal_generator 0.2.0.alpha
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.
- checksums.yaml +7 -0
- data/.editorconfig +23 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/Gemfile +4 -0
- data/README.md +80 -0
- data/Rakefile +22 -0
- data/bin/console +14 -0
- data/bin/rake +17 -0
- data/bin/setup +8 -0
- data/bin/thor +17 -0
- data/exe/jekyll_reveal_generator +4 -0
- data/exe/jrg +4 -0
- data/jekyll_reveal_generator.gemspec +34 -0
- data/lib/jekyll_reveal_generator/cli.rb +21 -0
- data/lib/jekyll_reveal_generator/create_new_presentation.rb +108 -0
- data/lib/jekyll_reveal_generator/create_slide.rb +82 -0
- data/lib/jekyll_reveal_generator/defaults.rb +56 -0
- data/lib/jekyll_reveal_generator/final_message.txt +34 -0
- data/lib/jekyll_reveal_generator/utils.rb +59 -0
- data/lib/jekyll_reveal_generator/version.rb +3 -0
- data/lib/jekyll_reveal_generator.rb +6 -0
- data/templates/presentation/.gitignore +4 -0
- data/templates/presentation/Gemfile +3 -0
- data/templates/presentation/Rakefile +11 -0
- data/templates/presentation/_config.yml +12 -0
- data/templates/presentation/_publish.yml.tt +3 -0
- data/templates/presentation/setup.sh +10 -0
- data/templates/presentation/source/_data/info.yml.tt +11 -0
- data/templates/presentation/source/_includes/slide_footer.html +4 -0
- data/templates/presentation/source/_includes/slide_header.html +4 -0
- data/templates/presentation/source/_includes/slides.html +3 -0
- data/templates/presentation/source/_layouts/printed_notes.html +22 -0
- data/templates/presentation/source/_layouts/slide.html +3 -0
- data/templates/presentation/source/_layouts/slideshow.html +37 -0
- data/templates/presentation/source/_slides/00-00-title-slide.md +37 -0
- data/templates/presentation/source/_slides/00-01-code-sample.html +39 -0
- data/templates/presentation/source/css/printed_styles.sass +23 -0
- data/templates/presentation/source/css/styles.sass +66 -0
- data/templates/presentation/source/css/zenburn.css +80 -0
- data/templates/presentation/source/index.html +3 -0
- data/templates/presentation/source/js/revealConfig.js +117 -0
- data/templates/presentation/source/notes.html +3 -0
- data/templates/slides/blank_slide.html.tt +7 -0
- data/templates/slides/blank_slide.markdown.tt +7 -0
- data/templates/slides/bullet_slide.html.tt +18 -0
- data/templates/slides/bullet_slide.markdown.tt +16 -0
- data/templates/slides/image_left_slide.html.tt +31 -0
- data/templates/slides/image_left_slide.markdown.tt +32 -0
- data/templates/slides/image_right_slide.html.tt +31 -0
- data/templates/slides/image_right_slide.markdown.tt +32 -0
- data/templates/slides/multi_slide.html.tt +19 -0
- data/templates/slides/multi_slide.markdown.tt +23 -0
- data/templates/slides/standard_slide.html.tt +10 -0
- data/templates/slides/standard_slide.markdown.tt +10 -0
- data/templates/slides/title_slide.html.tt +10 -0
- data/templates/slides/title_slide.markdown.tt +9 -0
- data/templates/slides/two_up_slide.html.tt +32 -0
- data/templates/slides/two_up_slide.markdown.tt +24 -0
- metadata +229 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d08fa0c08fb27a44a96e0ef462523bd849a6c91f
|
4
|
+
data.tar.gz: ce77550f90689c4ec42a2cf6edf0dbed5cc54499
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: '05092d82c726399926066eebdf1977059859889b625805ca4ea43374645d0a2760a1339215ce77c739c684b93d1ed3391b24995f7af45a10f8924908cbc2cb55'
|
7
|
+
data.tar.gz: 9939bfe3445a393611cb69d62e492f3e8866a83318e663b0c03555b4ff5308806a3eab44f013813bfc452b9812e2cb00772e7862dd85f34b6f28eb141e398188
|
data/.editorconfig
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# EditorConfig is awesome: http://EditorConfig.org
|
2
|
+
# Sample (and default) .editorconfig file for projects
|
3
|
+
|
4
|
+
# top-most EditorConfig file
|
5
|
+
root = true
|
6
|
+
|
7
|
+
# Unix-style newlines with a newline ending every file
|
8
|
+
[*]
|
9
|
+
end_of_line = lf
|
10
|
+
insert_final_newline = true
|
11
|
+
charset = utf-8
|
12
|
+
indent_style = space
|
13
|
+
indent_size = 2
|
14
|
+
|
15
|
+
# Tab indentation (no size specified)
|
16
|
+
[Makefile]
|
17
|
+
indent_style = tab
|
18
|
+
indent_size = 1
|
19
|
+
|
20
|
+
# Matches the exact files either package.json or .travis.yml
|
21
|
+
[{package.json,.travis.yml}]
|
22
|
+
indent_style = space
|
23
|
+
indent_size = 2
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
# JekyllRevealGenerator
|
2
|
+
|
3
|
+
Generate Jekyll-Reveal.js Slide Presentations
|
4
|
+
|
5
|
+
You should be familiar with [Jekyll] and [Reveal] to use this generator
|
6
|
+
effectively.
|
7
|
+
|
8
|
+
[Jekyll]: http://jekyllrb.com "The blog-aware static site generator"
|
9
|
+
[Reveal]: http://lab.hakim.se/reveal-js/#/ "The HTML presentation framework"
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
Install it yourself as:
|
14
|
+
|
15
|
+
$ gem install jekyll_reveal_generator
|
16
|
+
|
17
|
+
## Usage
|
18
|
+
|
19
|
+
$ jekyll_reveal_generator help
|
20
|
+
|
21
|
+
or
|
22
|
+
|
23
|
+
$ jrg help
|
24
|
+
|
25
|
+
To create a new presentation, use `init`:
|
26
|
+
|
27
|
+
$ jrg init my_prez
|
28
|
+
|
29
|
+
and answer the prompts. This will run the `setup.sh` script and
|
30
|
+
initialize a git repository and make the first commit.
|
31
|
+
|
32
|
+
To create a slide, from the presentation root directory, run:
|
33
|
+
|
34
|
+
$ cd my_pres
|
35
|
+
$ jrg slide
|
36
|
+
|
37
|
+
and answer the prompts.
|
38
|
+
|
39
|
+
The included Rakefile has two tasks, `serve` and `publish`:
|
40
|
+
|
41
|
+
* `serve` launches the jekyll server on port 4000
|
42
|
+
* `publish` builds the presentation adding the `_publish.yml`
|
43
|
+
configuration to the normal configuration
|
44
|
+
|
45
|
+
## Templates
|
46
|
+
|
47
|
+
The slide presentation template is in the `templates/presentation/`
|
48
|
+
directory.
|
49
|
+
|
50
|
+
The new slide templates are in `templates/slides`
|
51
|
+
|
52
|
+
There is no provision for adding or modifying the templates.
|
53
|
+
|
54
|
+
## Development
|
55
|
+
|
56
|
+
After checking out the repo, run `bin/setup` to install
|
57
|
+
dependencies. Then, run `rake test` to run the tests. You can also run
|
58
|
+
`bin/console` for an interactive prompt that will allow you to
|
59
|
+
experiment.
|
60
|
+
|
61
|
+
To install this gem onto your local machine, run `bundle exec rake
|
62
|
+
install`. To release a new version, update the version number in
|
63
|
+
`version.rb`, and then run `bundle exec rake release`, which will
|
64
|
+
create a git tag for the version, push git commits and tags, and push
|
65
|
+
the `.gem` file to [rubygems.org](https://rubygems.org).
|
66
|
+
|
67
|
+
This gem utilizes [Thor] as a generator.
|
68
|
+
|
69
|
+
## Testing
|
70
|
+
|
71
|
+
Testing is using [RSpec] for unit testing, and [Aruba] for
|
72
|
+
command-line testing.
|
73
|
+
|
74
|
+
[RSpec]: http://rspec.info/ "Behavior-Driven Development for Ruby. Making TDD Productive and Fun"
|
75
|
+
[Aruba]: https://github.com/cucumber/aruba "Test command-line applications with Cucumber-Ruby, Rspec, or Minitest"
|
76
|
+
|
77
|
+
## Contributing
|
78
|
+
|
79
|
+
Bug reports and pull requests are welcome on GitHub
|
80
|
+
at <https://github.com/tamouse/jekyll_reveal_generator>.
|
data/Rakefile
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
RSpec::Core::RakeTask.new(:spec)
|
6
|
+
|
7
|
+
require 'cucumber'
|
8
|
+
require 'cucumber/rake/task'
|
9
|
+
|
10
|
+
Cucumber::Rake::Task.new(:features) do |t|
|
11
|
+
t.cucumber_opts = "features --format pretty"
|
12
|
+
end
|
13
|
+
|
14
|
+
task :default => [:spec, :features]
|
15
|
+
|
16
|
+
rescue LoadError
|
17
|
+
$stderr.puts "Could not load Cucumber"
|
18
|
+
end
|
19
|
+
|
20
|
+
task :serve do |t|
|
21
|
+
sh 'bundle exec jekyll serve'
|
22
|
+
end
|
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "jekyll_reveal_generator"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
require "pry"
|
11
|
+
Pry.start
|
12
|
+
|
13
|
+
# require "irb"
|
14
|
+
# IRB.start(__FILE__)
|
data/bin/rake
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
#
|
4
|
+
# This file was generated by Bundler.
|
5
|
+
#
|
6
|
+
# The application 'rake' is installed as part of a gem, and
|
7
|
+
# this file is here to facilitate running it.
|
8
|
+
#
|
9
|
+
|
10
|
+
require "pathname"
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
12
|
+
Pathname.new(__FILE__).realpath)
|
13
|
+
|
14
|
+
require "rubygems"
|
15
|
+
require "bundler/setup"
|
16
|
+
|
17
|
+
load Gem.bin_path("rake", "rake")
|
data/bin/setup
ADDED
data/bin/thor
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
#
|
4
|
+
# This file was generated by Bundler.
|
5
|
+
#
|
6
|
+
# The application 'thor' is installed as part of a gem, and
|
7
|
+
# this file is here to facilitate running it.
|
8
|
+
#
|
9
|
+
|
10
|
+
require "pathname"
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
12
|
+
Pathname.new(__FILE__).realpath)
|
13
|
+
|
14
|
+
require "rubygems"
|
15
|
+
require "bundler/setup"
|
16
|
+
|
17
|
+
load Gem.bin_path("thor", "thor")
|
data/exe/jrg
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'jekyll_reveal_generator/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "jekyll_reveal_generator"
|
8
|
+
spec.version = JekyllRevealGenerator::VERSION
|
9
|
+
spec.authors = ["Tamara Temple"]
|
10
|
+
spec.email = ["tamouse@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Generate Jekyll-Reveal.js Slides}
|
13
|
+
spec.description = %q{Generate a slide presentation that uses Jekyll and Reveal.js}
|
14
|
+
spec.homepage = "https://github.com/tamouse/jekyll_reveal_generator"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
|
+
f.match(%r{^(test|spec|features)/})
|
18
|
+
end
|
19
|
+
spec.bindir = "exe"
|
20
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
|
+
spec.require_paths = ["lib"]
|
22
|
+
|
23
|
+
spec.add_dependency "bundler"
|
24
|
+
spec.add_dependency "rake"
|
25
|
+
spec.add_dependency "thor"
|
26
|
+
spec.add_dependency "recursive-open-struct"
|
27
|
+
|
28
|
+
spec.add_development_dependency "cucumber"
|
29
|
+
spec.add_development_dependency "aruba", "~> 1.0.0-alpha.2"
|
30
|
+
spec.add_development_dependency "rspec"
|
31
|
+
spec.add_development_dependency "faker"
|
32
|
+
spec.add_development_dependency "pry-byebug"
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "thor"
|
2
|
+
require "yaml"
|
3
|
+
require "json"
|
4
|
+
require "logger"
|
5
|
+
require "recursive-open-struct"
|
6
|
+
require "jekyll_reveal_generator/defaults"
|
7
|
+
require "jekyll_reveal_generator/create_new_presentation"
|
8
|
+
require "jekyll_reveal_generator/create_slide"
|
9
|
+
|
10
|
+
$logger = Logger.new(STDERR)
|
11
|
+
|
12
|
+
module JekyllRevealGenerator
|
13
|
+
class Cli < Thor
|
14
|
+
include Thor::Actions
|
15
|
+
|
16
|
+
add_runtime_options!
|
17
|
+
|
18
|
+
register(JekyllRevealGenerator::CreateNewPresentation, "init", "init", "Creates a new jekyll-reveal presentation")
|
19
|
+
register(JekyllRevealGenerator::CreateSlide, "slide", "slide", "Create a new slide")
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
require "yaml"
|
2
|
+
require "thor"
|
3
|
+
|
4
|
+
module JekyllRevealGenerator
|
5
|
+
class CreateNewPresentation < Thor::Group
|
6
|
+
include Thor::Actions
|
7
|
+
|
8
|
+
add_runtime_options!
|
9
|
+
|
10
|
+
desc "Creates a new Jekyll-Reveal Presentation"
|
11
|
+
argument :folder, type: :string, desc: "Folder to generate new presention"
|
12
|
+
|
13
|
+
attr_accessor :init_options
|
14
|
+
|
15
|
+
def init
|
16
|
+
self.init_options = RecursiveOpenStruct.new({
|
17
|
+
title: '',
|
18
|
+
description: '',
|
19
|
+
author: {
|
20
|
+
name: '',
|
21
|
+
email: '',
|
22
|
+
twitter: '',
|
23
|
+
github: ''
|
24
|
+
},
|
25
|
+
venue: {
|
26
|
+
name: '',
|
27
|
+
ssid: '',
|
28
|
+
password: ''
|
29
|
+
},
|
30
|
+
publishing: {
|
31
|
+
site_url: '',
|
32
|
+
base_url: '',
|
33
|
+
destination: 'docs'
|
34
|
+
}
|
35
|
+
}
|
36
|
+
.merge({"folder" => folder})
|
37
|
+
.merge(options))
|
38
|
+
|
39
|
+
self.init_options.title = ask("Title of presentation:", :green)
|
40
|
+
if init_options.title.match(%r{\A\s*\z})
|
41
|
+
$logger.error("You must give a title")
|
42
|
+
exit -1;
|
43
|
+
end
|
44
|
+
self.init_options.description = ask("Description:")
|
45
|
+
self.init_options.author.name = ask("Author's name:")
|
46
|
+
self.init_options.author.email = ask("Author's email:")
|
47
|
+
self.init_options.author.twitter = ask("Author's twitter handle:")
|
48
|
+
self.init_options.author.github = ask("Author's github name:")
|
49
|
+
self.init_options.venue.name = ask("Name of venue:", default: "T.B.D.")
|
50
|
+
self.init_options.venue.ssid = ask("What is the SSID?", default: "T.B.D.")
|
51
|
+
self.init_options.venue.password = ask("What is the network password? ", default: "T.B.D.")
|
52
|
+
self.init_options.publishing.site_url = ask("What is the published site url?")
|
53
|
+
self.init_options.publishing.base_url = ask("What is the base URL for the published site?")
|
54
|
+
self.init_options.publishing.destination = ask("What is the destination folder for the published site?", default: "docs")
|
55
|
+
|
56
|
+
puts init_options.to_h.to_yaml
|
57
|
+
unless yes?("Is this correct?", :red)
|
58
|
+
$logger.error("quitting, try again")
|
59
|
+
exit -1;
|
60
|
+
end
|
61
|
+
puts "Creating site"
|
62
|
+
end
|
63
|
+
|
64
|
+
def self.source_root
|
65
|
+
File.expand_path("../../../templates", __FILE__)
|
66
|
+
end
|
67
|
+
|
68
|
+
def intiialize_directory
|
69
|
+
config = {
|
70
|
+
verbose: init_options.quiet || true,
|
71
|
+
force: init_options.force || false,
|
72
|
+
pretend: init_options.pretend || false,
|
73
|
+
quiet: init_options.quient || false
|
74
|
+
}
|
75
|
+
empty_directory(init_options.folder, config)
|
76
|
+
destination_root = init_options.folder
|
77
|
+
directory("presentation", init_options.folder, config)
|
78
|
+
end
|
79
|
+
|
80
|
+
def initialize_presentation
|
81
|
+
if defined? Bundler
|
82
|
+
Bundler.with_clean_env do
|
83
|
+
run_initial_directory_setup
|
84
|
+
end
|
85
|
+
else
|
86
|
+
run_initial_directory_setup
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def final_message
|
91
|
+
msg = File.read(File.expand_path("../final_message.txt", __FILE__))
|
92
|
+
say(msg, :green)
|
93
|
+
end
|
94
|
+
|
95
|
+
private
|
96
|
+
|
97
|
+
def run_initial_directory_setup
|
98
|
+
inside(init_options.folder) do
|
99
|
+
run 'git init'
|
100
|
+
run 'sh setup.sh'
|
101
|
+
run 'git add --all -v'
|
102
|
+
run 'git commit -m "Initial Commit"'
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require "recursive-open-struct"
|
2
|
+
require "yaml"
|
3
|
+
require "thor"
|
4
|
+
require "jekyll_reveal_generator/utils"
|
5
|
+
require "pathname"
|
6
|
+
|
7
|
+
module JekyllRevealGenerator
|
8
|
+
class CreateSlide < Thor::Group
|
9
|
+
include Thor::Actions
|
10
|
+
include JekyllRevealGenerator::Utils
|
11
|
+
|
12
|
+
SLIDE_STYLES = [
|
13
|
+
'blank',
|
14
|
+
'bullet',
|
15
|
+
'image_left',
|
16
|
+
'image_right',
|
17
|
+
'multi',
|
18
|
+
'standard',
|
19
|
+
'title',
|
20
|
+
'two_up'
|
21
|
+
]
|
22
|
+
|
23
|
+
SLIDE_FORMATS = ['html', 'markdown']
|
24
|
+
|
25
|
+
|
26
|
+
add_runtime_options!
|
27
|
+
|
28
|
+
class_option(:working_dir, default: Pathname.pwd,
|
29
|
+
desc: "Working Directory; root of presentation",
|
30
|
+
type: :string, aliases: ['--WD'])
|
31
|
+
|
32
|
+
desc "Creates a new slide"
|
33
|
+
|
34
|
+
attr_accessor :slide_options
|
35
|
+
|
36
|
+
def slide
|
37
|
+
|
38
|
+
self.slide_options = RecursiveOpenStruct.new({
|
39
|
+
title: '',
|
40
|
+
group: 0,
|
41
|
+
sequence: 0,
|
42
|
+
slug: '',
|
43
|
+
format: 'html',
|
44
|
+
style: 'standard'
|
45
|
+
}
|
46
|
+
.merge(options))
|
47
|
+
|
48
|
+
self.slide_options.working_dir = Pathname.new(slide_options.working_dir)
|
49
|
+
|
50
|
+
Dir.chdir(slide_options.working_dir) do |wd|
|
51
|
+
self.slide_options.group = ask("Group?", default: last_slide_group).to_i
|
52
|
+
$logger.debug("slide_options.group: #{slide_options.group}")
|
53
|
+
self.slide_options.sequence = ask("Sequence?", default: last_slide_sequence(slide_options.group) + 1).to_i
|
54
|
+
end
|
55
|
+
|
56
|
+
self.slide_options.title = ask("Title of slide?")
|
57
|
+
self.slide_options.slug = ask("Slide slug?", default: slide_slug(slide_options))
|
58
|
+
self.slide_options.format = ask("Format? [#{SLIDE_FORMATS.join(", ")}]", limit_to: SLIDE_FORMATS, default: slide_options.format)
|
59
|
+
self.slide_options.style = ask("Slide style? [#{SLIDE_STYLES.join(", ")}]",
|
60
|
+
limit_to: SLIDE_STYLES,
|
61
|
+
default: 'standard')
|
62
|
+
$logger.debug("Slide Options: \n#{slide_options.to_h.to_yaml}")
|
63
|
+
end
|
64
|
+
|
65
|
+
def self.source_root
|
66
|
+
File.expand_path("../../../templates/slides", __FILE__)
|
67
|
+
end
|
68
|
+
|
69
|
+
def create_slide
|
70
|
+
source="#{slide_options.style}_slide.#{slide_options.format}"
|
71
|
+
$logger.debug("template_file: #{source}")
|
72
|
+
target_file="#{slide_options.slug}.#{slide_options.format}"
|
73
|
+
$logger.debug("target_file: #{target_file}")
|
74
|
+
destination=slide_options.working_dir.join("source", "_slides", target_file)
|
75
|
+
$logger.debug("destination: #{destination}")
|
76
|
+
template(source, destination)
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
|
2
|
+
module JekyllRevealGenerator
|
3
|
+
|
4
|
+
DEFAULT_CONFIGURATION = {
|
5
|
+
title: 'My Cool Talk',
|
6
|
+
subtitle: "It's the bee's knees",
|
7
|
+
author: {
|
8
|
+
name: 'Nobody',
|
9
|
+
email: 'nobody@example.com',
|
10
|
+
github: nil,
|
11
|
+
twitter: nil
|
12
|
+
},
|
13
|
+
collections: [
|
14
|
+
'slides'
|
15
|
+
],
|
16
|
+
exclude: [
|
17
|
+
'bs-config.js',
|
18
|
+
'package.json',
|
19
|
+
'node_modules'
|
20
|
+
],
|
21
|
+
kramdown: {
|
22
|
+
input: 'GFM',
|
23
|
+
hard_wrap: false,
|
24
|
+
parse_block_html: true,
|
25
|
+
parse_span_html: true
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
DEFAULT_PUBLISH_CONFIGURATION = {
|
30
|
+
url: '',
|
31
|
+
baseurl: ''
|
32
|
+
}
|
33
|
+
|
34
|
+
|
35
|
+
DEFAULT_PACKAGE_JSON = {
|
36
|
+
name: 'my-cool-talk',
|
37
|
+
version: JekyllRevealGenerator::VERSION,
|
38
|
+
description: "My cool talk",
|
39
|
+
main: "index.js",
|
40
|
+
scripts: {
|
41
|
+
"jekyll:serve": "bundle exec jekyll serve",
|
42
|
+
"jekyll:build": "bundle exec jekyll build --config=_configy.yml,_publish.yml",
|
43
|
+
"bs:serve": "browser-sync start --config bs-config.js",
|
44
|
+
"start": "concurrently \"npm run bs:serve\" \"npm run jekyll:serve\"",
|
45
|
+
"test": "echo \"Error: no tests specified\" && exit 1"
|
46
|
+
},
|
47
|
+
author: 'nobody',
|
48
|
+
license: "MIT"
|
49
|
+
}
|
50
|
+
|
51
|
+
NPM_PACKAGES = [
|
52
|
+
'browser-sync',
|
53
|
+
'concurrently'
|
54
|
+
]
|
55
|
+
|
56
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
|
2
|
+
Congratulations, your new presentation is now ready
|
3
|
+
for editing.
|
4
|
+
|
5
|
+
You can start up a server that will point to http://localhost:4000
|
6
|
+
|
7
|
+
cd #{init_options.folder}
|
8
|
+
bin/rake serve
|
9
|
+
|
10
|
+
If you add any node.js components, you can add to the setup.sh
|
11
|
+
script, it would be a good place to add the "npm install" or
|
12
|
+
"yarn" command.
|
13
|
+
|
14
|
+
I've already performed the initial git commit. You should keep
|
15
|
+
committing changes as you go along.
|
16
|
+
|
17
|
+
The "_publish.yml" file is used to modify the links and the
|
18
|
+
destination directory for publishing. This is mainly set up
|
19
|
+
for publishing to github pages using the "docs/" directory on
|
20
|
+
the master branch. If you want to go this way, the "_publish.yml"
|
21
|
+
file settings should be something like:
|
22
|
+
|
23
|
+
url: "https://YOURGITHUB.github.io"
|
24
|
+
baseurl: "/REPO_NAME"
|
25
|
+
destination: docs
|
26
|
+
|
27
|
+
In the REPO_NAME settings you can specify the location for
|
28
|
+
your github pages.
|
29
|
+
|
30
|
+
When you want to add slides, you can run "jrg" from the
|
31
|
+
presentation root and answer the questions.
|
32
|
+
|
33
|
+
cd #{init_options.folder}
|
34
|
+
jrg slide
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require "pathname"
|
2
|
+
|
3
|
+
module JekyllRevealGenerator
|
4
|
+
|
5
|
+
module Utils
|
6
|
+
|
7
|
+
def slide_slug(o)
|
8
|
+
pattern = "%02d-%02d-%s"
|
9
|
+
pattern % [
|
10
|
+
o.group.to_i,
|
11
|
+
o.sequence.to_i,
|
12
|
+
o.title.downcase
|
13
|
+
.gsub(/[^[:alnum:]]+/,'-')
|
14
|
+
.sub(/-+\z/,'')
|
15
|
+
]
|
16
|
+
end
|
17
|
+
|
18
|
+
def group_num(file)
|
19
|
+
file.to_s.split("-")[0].to_i
|
20
|
+
end
|
21
|
+
|
22
|
+
def sequence_num(file)
|
23
|
+
file.to_s.split("-")[1].to_i
|
24
|
+
end
|
25
|
+
|
26
|
+
def last_slide_group(files=nil)
|
27
|
+
files ||= slide_files
|
28
|
+
files
|
29
|
+
.map{|file| group_num(file) }
|
30
|
+
.uniq.sort.last
|
31
|
+
end
|
32
|
+
|
33
|
+
def last_slide_sequence(group, files=nil)
|
34
|
+
files ||= slide_files
|
35
|
+
files
|
36
|
+
.reject{|file| group != group_num(file) }
|
37
|
+
.map{|file| sequence_num(file)}
|
38
|
+
.uniq.sort.last || -1
|
39
|
+
end
|
40
|
+
|
41
|
+
def slides
|
42
|
+
@slides ||= source.join(source, '_slides')
|
43
|
+
end
|
44
|
+
|
45
|
+
def slide_files
|
46
|
+
@slide_files ||= slides.children
|
47
|
+
.map{|f| f.basename}
|
48
|
+
end
|
49
|
+
|
50
|
+
def source
|
51
|
+
@source ||= root_dir.join("source")
|
52
|
+
end
|
53
|
+
|
54
|
+
def root_dir(dir=nil)
|
55
|
+
@root_dir ||= (dir ? Pathname.new(dir) : Pathname.pwd)
|
56
|
+
end
|
57
|
+
|
58
|
+
end # module Utils
|
59
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
|
2
|
+
desc "Run the jekyll development server"
|
3
|
+
task :serve do |t|
|
4
|
+
sh 'bundle exec jekyll serve --config=_config.yml'
|
5
|
+
end
|
6
|
+
|
7
|
+
|
8
|
+
desc "Build the published version"
|
9
|
+
task :publish do |t|
|
10
|
+
sh 'bundle exec jekyll build --config=_config.yml,_publish.yml'
|
11
|
+
end
|