slide-em-up 0.3.1 → 0.3.2

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.
data/README.md CHANGED
@@ -120,6 +120,13 @@ setting the `APIKEY` environment variable:
120
120
  APIKEY=foobar slide-em-up
121
121
 
122
122
 
123
+ Export to PDF
124
+ -------------
125
+
126
+ You can export your presentation to PDF by installing
127
+ [phantomjs](http://phantomjs.org/) and then run `slide-em-up2pdf`.
128
+
129
+
123
130
  Examples
124
131
  --------
125
132
 
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'tmpdir'
4
+ require "slide-em-up"
5
+ require "goliath/runner"
6
+
7
+
8
+ puts "Export to pdf..."
9
+
10
+ # Config
11
+ output = ARGV.first || "slides.pdf"
12
+ delay = 500
13
+ url = "http://localhost:9000/"
14
+ viewport = { width: 1024, height: 768 }
15
+ presentation = SlideEmUp::Presentation.new(Dir.pwd)
16
+
17
+ # Run a slide-em-up instance in background
18
+ pid = Process.fork do
19
+ runner = Goliath::Runner.new([], nil)
20
+ runner.app = SlideEmUp::Routes.run(presentation)
21
+ runner.run
22
+ end
23
+
24
+ # Count the number of slides
25
+ nb_slides = presentation.nb_slides
26
+
27
+ # The phantomjs script
28
+ js = <<-EOS
29
+ var dir = phantom.args[0];
30
+ var page = require('webpage').create();
31
+ page.viewportSize = { width: #{viewport[:width]}, height: #{viewport[:height]} };
32
+ page.paperSize = { format: 'A4', orientation: 'landscape' };
33
+
34
+ function exportSlides() {
35
+ var i = 0;
36
+ setInterval(function() {
37
+ console.log('Render slide ' + i);
38
+ page.render(dir + '/slide' + i + '.pdf');
39
+ page.sendEvent('keypress', ' ');
40
+ if (++i == #{nb_slides}) { phantom.exit(); }
41
+ }, #{delay});
42
+ }
43
+
44
+ console.log('Load #{url}');
45
+ page.open("#{url}", function (status) {
46
+ if (status !== 'success') {
47
+ console.log('Unable to load the given URL');
48
+ phantom.exit(-1);
49
+ } else {
50
+ // wait to be sure the page is loaded correctly
51
+ setTimeout(exportSlides, #{delay} * 5);
52
+ }
53
+ });
54
+ EOS
55
+
56
+ Dir.mktmpdir do |dir|
57
+ sleep 2
58
+ script = "#{dir}/script.js"
59
+ File.write script, js
60
+ system "phantomjs #{script} #{dir}"
61
+ files = (0...nb_slides).map {|i| "#{dir}/slide#{i}.pdf" }.join ' '
62
+ system "pdftk #{files} cat output #{output}"
63
+ File.delete script
64
+ end
65
+
66
+ Process.kill "QUIT", pid
67
+ Process.wait pid
@@ -40,6 +40,13 @@ module SlideEmUp
40
40
  Dir["#{meta.dir}/**#{asset}"].first
41
41
  end
42
42
 
43
+ def nb_slides
44
+ @parts.inject(0) do |nb,(dir,title)|
45
+ raw = Dir["#{meta.dir}/#{dir}/**/*.md"].map { |f| File.read(f) }.join("\n\n")
46
+ nb += raw.split(/!SLIDE */).length
47
+ end
48
+ end
49
+
43
50
  protected
44
51
 
45
52
  def extract_normal_infos(dir)
@@ -1,3 +1,3 @@
1
1
  module SlideEmUp
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
@@ -1,4 +1,4 @@
1
- <!doctype html>
1
+ <!doctype html>
2
2
  <html>
3
3
  <head>
4
4
  <meta charset="utf-8">
@@ -43,7 +43,9 @@ var Slideshow = (function(){
43
43
  document.addEventListener('touchstart', onDocumentTouchStart, false);
44
44
  window.addEventListener('hashchange', onWindowHashChange, false);
45
45
 
46
- startEventSourceHandler('/remote/sub/events');
46
+ window.setTimeout(function() {
47
+ startEventSourceHandler('/remote/sub/events');
48
+ }, 100);
47
49
 
48
50
  // Read the initial state of the URL (hash)
49
51
  readURL();
@@ -157,7 +157,9 @@ var self = window.SlideShow = function(slide) {
157
157
  document.addEventListener('touchend', this, false);
158
158
  document.addEventListener('touchcancel', this, false);
159
159
 
160
- this.startEventSourceHandler('/remote/sub/events');
160
+ window.setTimeout(function() {
161
+ this.startEventSourceHandler('/remote/sub/events');
162
+ }, 100);
161
163
 
162
164
  // Process iframe slides
163
165
  $$('.slide[data-src]:empty').forEach(function(slide) {
@@ -304,7 +304,9 @@
304
304
  function(e) { if (e.state) { _t.go(e.state); } }, false);
305
305
  query('#left-init-key').addEventListener('click',
306
306
  function() { _t.next(); }, false);
307
- this._startEventSource('/remote/sub/events');
307
+ window.setTimeout(function() {
308
+ this._startEventSource('/remote/sub/events');
309
+ }, 100);
308
310
  this._update();
309
311
  };
310
312
 
@@ -119,7 +119,9 @@ var self = window.SlideShow = function(slide) {
119
119
  document.addEventListener('keyup', this, false);
120
120
  document.addEventListener('keydown', this, false);
121
121
 
122
- this.startEventSourceHandler('/remote/sub/events');
122
+ window.setTimeout(function() {
123
+ this.startEventSourceHandler('/remote/sub/events');
124
+ }, 100);
123
125
 
124
126
  // Process iframe slides
125
127
  $$('.slide[data-src]:empty').forEach(function(slide) {
@@ -319,5 +319,7 @@
319
319
  }
320
320
  }, false);
321
321
 
322
- startEventSourceHandler('/remote/sub/events');
322
+ window.setTimeout(function() {
323
+ startEventSourceHandler('/remote/sub/events');
324
+ }, 100);
323
325
  }());
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slide-em-up
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-10-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: goliath
16
- requirement: &83664580 !ruby/object:Gem::Requirement
16
+ requirement: &75213700 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '1.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *83664580
24
+ version_requirements: *75213700
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: redcarpet
27
- requirement: &83664170 !ruby/object:Gem::Requirement
27
+ requirement: &75213370 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '2.1'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *83664170
35
+ version_requirements: *75213370
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: erubis
38
- requirement: &83733670 !ruby/object:Gem::Requirement
38
+ requirement: &75212860 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '2.7'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *83733670
46
+ version_requirements: *75212860
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yajl-ruby
49
- requirement: &83732800 !ruby/object:Gem::Requirement
49
+ requirement: &75212540 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '1.1'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *83732800
57
+ version_requirements: *75212540
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: albino
60
- requirement: &83732260 !ruby/object:Gem::Requirement
60
+ requirement: &75212210 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '1.3'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *83732260
68
+ version_requirements: *75212210
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: minitest
71
- requirement: &83731910 !ruby/object:Gem::Requirement
71
+ requirement: &75211700 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,11 +76,12 @@ dependencies:
76
76
  version: '2.3'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *83731910
79
+ version_requirements: *75211700
80
80
  description: Slide'em up is a presentation tool that displays markdown-formatted slides
81
81
  email: bruno.michel@af83.com
82
82
  executables:
83
83
  - slide-em-up
84
+ - slide-em-up2pdf
84
85
  extensions: []
85
86
  extra_rdoc_files:
86
87
  - README.md
@@ -88,6 +89,7 @@ files:
88
89
  - MIT-LICENSE
89
90
  - README.md
90
91
  - Gemfile
92
+ - bin/slide-em-up2pdf
91
93
  - bin/slide-em-up
92
94
  - lib/slide-em-up.rb
93
95
  - lib/slide-em-up/markdown.rb