prez 0.0.6 → 0.1.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.
- checksums.yaml +4 -4
- data/bin/prez +2 -2
- data/lib/prez/assets.rb +0 -4
- data/lib/prez/build.rb +23 -9
- data/lib/prez/builder.rb +0 -1
- data/lib/prez/cache.rb +0 -1
- data/lib/prez/cli.rb +2 -6
- data/lib/prez/helpers.rb +0 -2
- data/lib/prez/new.rb +0 -1
- data/lib/prez/sass_extensions.rb +0 -3
- data/lib/prez/start.rb +23 -9
- data/lib/prez/version.rb +1 -1
- data/lib/prez.rb +14 -1
- data/templates/build.html.tt +0 -21
- data/vendor/javascripts/prez-controller.js.coffee +58 -35
- data/vendor/stylesheets/prez.scss +38 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13415316b5dd25295ffe13e8beeb11fd298be3fd
|
4
|
+
data.tar.gz: 40e50b72d184a9dee9860bcfeb88138325dc760b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 32fcb1f65a52968389fc0641a002079807cd328f278854e5b19da0b4b748119c381a37e9edc67a88873d3c9fba67f661577feee1dad88cdbcf50c1f0f3ca21cb
|
7
|
+
data.tar.gz: 26d7be1f411008d9fe81a9a55894d950202b0ddad08f182e3273063dd82d1c4f5056c57874ef6e9ad7d13fda0c8608e69525de26f91f83bd9535cc74c65702e1
|
data/bin/prez
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
require "rubygems"
|
3
3
|
gem "coffee-script", "~> 2.3"
|
4
4
|
gem "launchy", "~> 2.4"
|
5
|
-
gem "prez", "= 0.0
|
5
|
+
gem "prez", "= 0.1.0"
|
6
6
|
gem "sass", "~> 3.4"
|
7
7
|
gem "therubyracer", "~> 0.12"
|
8
8
|
gem "thor", "~> 0.19"
|
9
9
|
gem "uglifier", "~> 2.7"
|
10
|
-
require "prez
|
10
|
+
require "prez"
|
11
11
|
Prez::CLI.start
|
data/lib/prez/assets.rb
CHANGED
data/lib/prez/build.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require "prez/builder"
|
2
|
-
require "prez/error"
|
3
1
|
require "thor/actions"
|
4
2
|
require "thor/group"
|
5
3
|
|
@@ -7,19 +5,19 @@ module Prez
|
|
7
5
|
class Build < Thor::Group
|
8
6
|
include Thor::Actions
|
9
7
|
include Prez::Builder
|
10
|
-
argument :name, type: :string
|
8
|
+
argument :name, type: :string, required: false, default: nil
|
11
9
|
|
12
10
|
def check_file!
|
13
|
-
if File.exists?
|
14
|
-
@filename =
|
15
|
-
elsif File.exists? "#{
|
16
|
-
@filename = "#{
|
11
|
+
if File.exists? prez_name
|
12
|
+
@filename = prez_name
|
13
|
+
elsif File.exists? "#{prez_name}.prez"
|
14
|
+
@filename = "#{prez_name}.prez"
|
17
15
|
else
|
18
|
-
raise Prez::Error.new("Missing prez file '#{
|
16
|
+
raise Prez::Error.new("Missing prez file '#{prez_name}'")
|
19
17
|
end
|
20
18
|
|
21
19
|
if filename =~ /\.html$/
|
22
|
-
raise Prez::Error.new("Prez file cannot be an html file: '#{
|
20
|
+
raise Prez::Error.new("Prez file cannot be an html file: '#{prez_name}'")
|
23
21
|
end
|
24
22
|
end
|
25
23
|
|
@@ -29,6 +27,22 @@ module Prez
|
|
29
27
|
|
30
28
|
private
|
31
29
|
|
30
|
+
def prez_name
|
31
|
+
@prez_name = name || only_existing_prez
|
32
|
+
end
|
33
|
+
|
34
|
+
def only_existing_prez
|
35
|
+
results = Dir.glob "*.prez"
|
36
|
+
|
37
|
+
if results.empty?
|
38
|
+
raise Prez::Error.new("No .prez files found!")
|
39
|
+
elsif results.size > 1
|
40
|
+
raise Prez::Error.new("More than one .prez file found!\nPlease specify which one you want to build.")
|
41
|
+
end
|
42
|
+
|
43
|
+
results.first
|
44
|
+
end
|
45
|
+
|
32
46
|
def base_name
|
33
47
|
filename.sub /\.prez$/, ""
|
34
48
|
end
|
data/lib/prez/builder.rb
CHANGED
data/lib/prez/cache.rb
CHANGED
data/lib/prez/cli.rb
CHANGED
@@ -1,14 +1,10 @@
|
|
1
|
-
require "prez/build"
|
2
|
-
require "prez/new"
|
3
|
-
require "prez/start"
|
4
|
-
require "prez/version"
|
5
1
|
require "thor"
|
6
2
|
|
7
3
|
module Prez
|
8
4
|
class CLI < Thor
|
9
|
-
register Prez::Build, "build", "build NAME", "Builds the single html presentation from the prez file"
|
5
|
+
register Prez::Build, "build", "build [NAME]", "Builds the single html presentation from the prez file"
|
10
6
|
register Prez::New, "new", "new NAME", "Generates a new presentation"
|
11
|
-
register Prez::Start, "start", "start NAME", "Launches your browser with the given presentation"
|
7
|
+
register Prez::Start, "start", "start [NAME]", "Launches your browser with the given presentation"
|
12
8
|
|
13
9
|
map "-v" => "version"
|
14
10
|
|
data/lib/prez/helpers.rb
CHANGED
data/lib/prez/new.rb
CHANGED
data/lib/prez/sass_extensions.rb
CHANGED
data/lib/prez/start.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
1
|
require "launchy"
|
2
|
-
require "prez/builder"
|
3
|
-
require "prez/error"
|
4
2
|
require "thor/actions"
|
5
3
|
require "thor/group"
|
6
4
|
require "webrick"
|
@@ -9,20 +7,20 @@ module Prez
|
|
9
7
|
class Start < Thor::Group
|
10
8
|
include Thor::Actions
|
11
9
|
include Prez::Builder
|
12
|
-
argument :name, type: :string
|
10
|
+
argument :name, type: :string, required: false, default: nil
|
13
11
|
class_option :server, type: :boolean, desc: "Keep the server up for dynamic refreshes"
|
14
12
|
|
15
13
|
def check_file!
|
16
|
-
if File.exists?
|
17
|
-
@filename =
|
18
|
-
elsif File.exists? "#{
|
19
|
-
@filename = "#{
|
14
|
+
if File.exists? prez_name
|
15
|
+
@filename = prez_name
|
16
|
+
elsif File.exists? "#{prez_name}.prez"
|
17
|
+
@filename = "#{prez_name}.prez"
|
20
18
|
else
|
21
|
-
raise Prez::Error.new("Missing prez file '#{
|
19
|
+
raise Prez::Error.new("Missing prez file '#{prez_name}'")
|
22
20
|
end
|
23
21
|
|
24
22
|
if filename =~ /\.html$/
|
25
|
-
raise Prez::Error.new("Prez file cannot be an html file: '#{
|
23
|
+
raise Prez::Error.new("Prez file cannot be an html file: '#{prez_name}'")
|
26
24
|
end
|
27
25
|
end
|
28
26
|
|
@@ -69,6 +67,22 @@ module Prez
|
|
69
67
|
|
70
68
|
private
|
71
69
|
|
70
|
+
def prez_name
|
71
|
+
@prez_name = name || only_existing_prez
|
72
|
+
end
|
73
|
+
|
74
|
+
def only_existing_prez
|
75
|
+
results = Dir.glob "*.prez"
|
76
|
+
|
77
|
+
if results.empty?
|
78
|
+
raise Prez::Error.new("No .prez files found!")
|
79
|
+
elsif results.size > 1
|
80
|
+
raise Prez::Error.new("More than one .prez file found!\nPlease specify which one you want to start.")
|
81
|
+
end
|
82
|
+
|
83
|
+
results.first
|
84
|
+
end
|
85
|
+
|
72
86
|
def stop_server
|
73
87
|
say "Shutting down server..."
|
74
88
|
@server.shutdown
|
data/lib/prez/version.rb
CHANGED
data/lib/prez.rb
CHANGED
@@ -1 +1,14 @@
|
|
1
|
-
|
1
|
+
module Prez
|
2
|
+
autoload :Assets, "prez/assets"
|
3
|
+
autoload :Build, "prez/build"
|
4
|
+
autoload :Builder, "prez/builder"
|
5
|
+
autoload :Cache, "prez/cache"
|
6
|
+
autoload :CLI, "prez/cli"
|
7
|
+
autoload :DataUri, "prez/data_uri"
|
8
|
+
autoload :Error, "prez/error"
|
9
|
+
autoload :Files, "prez/files"
|
10
|
+
autoload :Helpers, "prez/helpers"
|
11
|
+
autoload :New, "prez/new"
|
12
|
+
autoload :Start, "prez/start"
|
13
|
+
autoload :Version, "prez/version"
|
14
|
+
end
|
data/templates/build.html.tt
CHANGED
@@ -85,27 +85,6 @@
|
|
85
85
|
</div>
|
86
86
|
</div>
|
87
87
|
</div>
|
88
|
-
|
89
|
-
<div id="in-window-not-implemented-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="not-implemented" aria-hidden="true">
|
90
|
-
<div class="modal-dialog">
|
91
|
-
<div class="modal-content">
|
92
|
-
<div class="modal-header">
|
93
|
-
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
94
|
-
<h4 class="modal-title" id="not-implemented">Not Implemented</h4>
|
95
|
-
</div>
|
96
|
-
|
97
|
-
<div class="modal-body">
|
98
|
-
<p>
|
99
|
-
Sorry, same window presentations are not yet implemented!
|
100
|
-
</p>
|
101
|
-
</div>
|
102
|
-
|
103
|
-
<div class="modal-footer">
|
104
|
-
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
105
|
-
</div>
|
106
|
-
</div>
|
107
|
-
</div>
|
108
|
-
</div>
|
109
88
|
</div>
|
110
89
|
</body>
|
111
90
|
</html>
|
@@ -7,6 +7,7 @@ $.fn.slideDuration = ->
|
|
7
7
|
class Prez
|
8
8
|
DEFAULT_OPTIONS =
|
9
9
|
useHash: true
|
10
|
+
displayTime: true
|
10
11
|
duration: 0
|
11
12
|
slideElementStyle: "hide"
|
12
13
|
|
@@ -14,11 +15,20 @@ class Prez
|
|
14
15
|
@options = $.extend {}, DEFAULT_OPTIONS, options
|
15
16
|
@window = options.window
|
16
17
|
@document = @window.document
|
17
|
-
|
18
|
+
|
19
|
+
if options.content
|
20
|
+
@document.write options.content
|
21
|
+
delete options.content
|
22
|
+
else
|
23
|
+
@document.write $("#slides-document").text()
|
24
|
+
|
18
25
|
@document.close()
|
19
26
|
@options.beforeStart?(@)
|
20
27
|
@start()
|
21
28
|
|
29
|
+
showTime: ->
|
30
|
+
@options.displayTime
|
31
|
+
|
22
32
|
start: ->
|
23
33
|
changeToHashSlide = =>
|
24
34
|
return false unless @options.useHash
|
@@ -205,6 +215,7 @@ class Prez
|
|
205
215
|
|
206
216
|
timeChange: ->
|
207
217
|
return unless Prez.current
|
218
|
+
return unless Prez.current.showTime()
|
208
219
|
$(".prez-total-duration").text Prez.current.remainingPresentationTime()
|
209
220
|
seconds = Prez.current.remainingPresentationSeconds()
|
210
221
|
$(".prez-total-duration").toggleClass("prez-danger-time", seconds <= 60 && seconds >= 0)
|
@@ -237,40 +248,55 @@ $(document).on "click", "#new-window", (e) ->
|
|
237
248
|
$(document).on "click", "#launch", (e) ->
|
238
249
|
e.preventDefault()
|
239
250
|
return if Prez.current
|
240
|
-
|
241
|
-
unless $("#new-window").is(".active")
|
242
|
-
$("#in-window-not-implemented-modal").modal "show"
|
243
|
-
return
|
244
|
-
|
251
|
+
useNewWindow = $("#new-window").is(".active")
|
245
252
|
iframe = $("iframe")[0]
|
246
253
|
|
247
|
-
iframe =
|
248
|
-
|
249
|
-
|
250
|
-
|
254
|
+
iframe.getFrameWindow = ->
|
255
|
+
if @contentWindow
|
256
|
+
@contentWindow
|
257
|
+
else if @contentDocument.document
|
258
|
+
@contentDocument.document
|
259
|
+
else
|
260
|
+
@contentDocument
|
261
|
+
|
262
|
+
|
263
|
+
if useNewWindow
|
264
|
+
iframePrez = new Prez
|
265
|
+
window: iframe.getFrameWindow()
|
266
|
+
useHash: false
|
267
|
+
slideElementStyle: "opacity"
|
268
|
+
|
269
|
+
Prez.current = new Prez
|
270
|
+
duration: Prez.timeToSeconds($("#prez-duration").val())
|
271
|
+
window: window.open("", "prez", "width=640,height=480")
|
272
|
+
slideChanged: ($slide, slideNumber, elementNumber) ->
|
273
|
+
notes = $slide.find(".prez-notes").html() || ""
|
274
|
+
$("#slide-notes").html notes
|
275
|
+
$(".current-slide-number:not(select)").text $slide.data("slide")
|
276
|
+
$("select.current-slide-number").val $slide.data("slide")
|
277
|
+
Prez.handlers.timeChange()
|
278
|
+
iframePrez.changeSlideTo slideNumber, elementNumber
|
279
|
+
beforeStart: (prez) ->
|
280
|
+
$("select.current-slide-number").empty()
|
281
|
+
|
282
|
+
for i in [1..prez.countSlides()]
|
283
|
+
$("select.current-slide-number").append """<option value="#{i}">#{i}</option>"""
|
251
284
|
else
|
252
|
-
iframe.
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
Prez.handlers.timeChange()
|
268
|
-
iframePrez.changeSlideTo slideNumber, elementNumber
|
269
|
-
beforeStart: (prez) ->
|
270
|
-
$("select.current-slide-number").empty()
|
271
|
-
|
272
|
-
for i in [1..prez.countSlides()]
|
273
|
-
$("select.current-slide-number").append """<option value="#{i}">#{i}</option>"""
|
285
|
+
$iframe = $(iframe).detach().css
|
286
|
+
position: "absolute"
|
287
|
+
left: "0px"
|
288
|
+
top: "0px"
|
289
|
+
width: "100%"
|
290
|
+
height: "100%"
|
291
|
+
zIndex: 10000
|
292
|
+
iframeContent = $("#slides-document").text()
|
293
|
+
$("body").empty()
|
294
|
+
$iframe.prependTo("body")
|
295
|
+
|
296
|
+
Prez.current = new Prez
|
297
|
+
displayTime: false
|
298
|
+
content: iframeContent
|
299
|
+
window: iframe.getFrameWindow()
|
274
300
|
|
275
301
|
$(".total-slides").text Prez.current.countSlides()
|
276
302
|
$("#pre-launch").hide()
|
@@ -303,6 +329,3 @@ $(window).bind "beforeunload", ->
|
|
303
329
|
|
304
330
|
$(document).on "keydown", Prez.handlers.keyDown
|
305
331
|
$.setInterval 50, Prez.handlers.timeChange
|
306
|
-
|
307
|
-
$ ->
|
308
|
-
$("#in-window-not-implemented-modal").modal show: false
|
@@ -32,11 +32,19 @@ body {
|
|
32
32
|
padding: $prez-padding;
|
33
33
|
text-align: center;
|
34
34
|
|
35
|
-
|
35
|
+
.center-aligned {
|
36
|
+
text-align: center;
|
37
|
+
}
|
38
|
+
|
39
|
+
&.left-aligned, .left-aligned {
|
36
40
|
text-align: left;
|
37
41
|
}
|
38
42
|
|
39
|
-
|
43
|
+
.left-aligned {
|
44
|
+
padding-left: 5%;
|
45
|
+
}
|
46
|
+
|
47
|
+
&.right-aligned, .right-aligned {
|
40
48
|
text-align: right;
|
41
49
|
}
|
42
50
|
|
@@ -49,10 +57,37 @@ body {
|
|
49
57
|
}
|
50
58
|
}
|
51
59
|
|
52
|
-
.
|
60
|
+
.pre {
|
61
|
+
font-family: monospace;
|
62
|
+
font-size: 0.9em;
|
63
|
+
white-space: pre;
|
64
|
+
}
|
65
|
+
|
66
|
+
.smaller, .smaller.pre {
|
53
67
|
font-size: 0.7em;
|
54
68
|
}
|
55
69
|
|
70
|
+
.biggest {
|
71
|
+
font-size: 5.0em;
|
72
|
+
}
|
73
|
+
|
74
|
+
|
75
|
+
.red-background {
|
76
|
+
background-color: #ffcccc;
|
77
|
+
}
|
78
|
+
|
79
|
+
.green-background {
|
80
|
+
background-color: #ccffcc;
|
81
|
+
}
|
82
|
+
|
83
|
+
.blue-background {
|
84
|
+
background-color: #ccccff;
|
85
|
+
}
|
86
|
+
|
87
|
+
.emphasize {
|
88
|
+
font-weight: bold;
|
89
|
+
}
|
90
|
+
|
56
91
|
dt {
|
57
92
|
font-weight: bold;
|
58
93
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prez
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Virata-Stone
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: coffee-script
|
@@ -248,7 +248,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
248
248
|
version: '0'
|
249
249
|
requirements: []
|
250
250
|
rubyforge_project:
|
251
|
-
rubygems_version: 2.
|
251
|
+
rubygems_version: 2.5.1
|
252
252
|
signing_key:
|
253
253
|
specification_version: 4
|
254
254
|
summary: Create simple single file presentations
|