prez 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2249ace5ffb8f6605523aa4604763b57445b4bd3
4
+ data.tar.gz: 7dba78c2ade67bd68bab76e895057aae7fb8cfed
5
+ SHA512:
6
+ metadata.gz: 2e4dc2afb90be92edde3071a9dfef2901fbe7a6e629f3353dec14581b6b11b2e656f0d5b48b40a396e1f0c92a06a1f2e84773a7183cff69bc56fd0d22de98726
7
+ data.tar.gz: a4888d107c8efb98b12d363a5204ccfe26d838a730a2fb71e48c6d37a7bc9654a35ab11fa24e27f853a563e8a678e210c593c9a321efaa7293f6e7552caf0f5b
data/bin/prez ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+ require "rubygems"
3
+ gem "prez", "= 0.0.1"
4
+ gem "sass", "~> 3.4"
5
+ gem "therubyracer", "~> 0.12"
6
+ gem "thor", "~> 0.19"
7
+ gem "uglifier", "~> 2.7"
8
+ require "prez/cli"
9
+ Prez::CLI.start
@@ -0,0 +1,83 @@
1
+ require "prez/files"
2
+ require "sass"
3
+ require "uglifier"
4
+
5
+ module Prez
6
+ module Assets
7
+ class Tagged
8
+ attr_reader :name, :contents
9
+
10
+ def initialize(name, options = {})
11
+ @name = name
12
+ @contents = Prez::Files.contents name, extension
13
+ @dev = options.fetch :dev, false
14
+ end
15
+
16
+ def dev?
17
+ @dev
18
+ end
19
+
20
+ def minified_contents
21
+ minify contents
22
+ end
23
+
24
+ def minify(contents)
25
+ contents
26
+ end
27
+
28
+ def to_tag
29
+ if dev?
30
+ "#{open}\n#{contents}#{close}"
31
+ else
32
+ "#{open}#{minified_contents}#{close}"
33
+ end
34
+ end
35
+ end
36
+
37
+ class Javascript < Prez::Assets::Tagged
38
+ def extension
39
+ "js"
40
+ end
41
+
42
+ def open
43
+ %{<script type="text/javascript">}
44
+ end
45
+
46
+ def close
47
+ %{</script>}
48
+ end
49
+
50
+ def minify(contents)
51
+ Uglifier.compile contents
52
+ end
53
+ end
54
+
55
+ class Stylesheet < Prez::Assets::Tagged
56
+ def extension
57
+ "css"
58
+ end
59
+
60
+ def open
61
+ %{<style type="text/css">}
62
+ end
63
+
64
+ def close
65
+ %{</style>}
66
+ end
67
+
68
+ def minify(contents)
69
+ Sass::Engine.new(contents, syntax: :scss, style: :compressed).render
70
+ end
71
+ end
72
+
73
+ class << self
74
+ def javascript(name, options = {})
75
+ Prez::Assets::Javascript.new(name, options).to_tag
76
+ end
77
+
78
+ def stylesheet(name, options = {})
79
+ Prez::Assets::Stylesheet.new(name, options).to_tag
80
+ end
81
+ end
82
+ end
83
+ end
data/lib/prez/build.rb ADDED
@@ -0,0 +1,61 @@
1
+ require "prez/assets"
2
+ require "thor/actions"
3
+ require "thor/error"
4
+ require "thor/group"
5
+
6
+ module Prez
7
+ class Build < Thor::Group
8
+ include Thor::Actions
9
+ argument :name, type: :string
10
+
11
+ def check_file!
12
+ if File.exists? name
13
+ @filename = name
14
+ elsif File.exists? "#{name}.prez"
15
+ @filename = "#{name}.prez"
16
+ else
17
+ raise Thor::Error.new(set_color("Missing prez file '#{name}'", :red, :bold))
18
+ end
19
+
20
+ if filename =~ /\.html$/
21
+ raise Thor::Error.new(set_color("Prez file cannot be html file: '#{name}'", :red, :bold))
22
+ end
23
+ end
24
+
25
+ def generate_html
26
+ template filename, html_filename
27
+ end
28
+
29
+ private
30
+
31
+ def base_name
32
+ filename.sub /\.prez$/, ""
33
+ end
34
+
35
+ def filename
36
+ @filename
37
+ end
38
+
39
+ def html_filename
40
+ "#{base_name}.html"
41
+ end
42
+
43
+ def javascript(name)
44
+ Prez::Assets.javascript name
45
+ rescue Prez::Files::MissingError
46
+ raise Thor::Error.new(set_color("Could not find file: '#{name}.js'", :red, :bold))
47
+ end
48
+
49
+ def stylesheet(name)
50
+ Prez::Assets.stylesheet name
51
+ rescue Prez::Files::MissingError
52
+ raise Thor::Error.new(set_color("Could not find file: '#{name}.css'", :red, :bold))
53
+ end
54
+
55
+ class << self
56
+ def source_root
57
+ File.expand_path "."
58
+ end
59
+ end
60
+ end
61
+ end
data/lib/prez/cli.rb ADDED
@@ -0,0 +1,35 @@
1
+ require "prez/build"
2
+ require "prez/version"
3
+ require "thor"
4
+ require "thor/actions"
5
+
6
+ module Prez
7
+ class CLI < Thor
8
+ include Thor::Actions
9
+ register Prez::Build, "build", "build NAME", "Builds the single html presentation from the prez file"
10
+
11
+ map "-v" => "version"
12
+
13
+ desc "new NAME", "Generates a new presentation"
14
+ def new(name)
15
+ template "new.prez.tt", "#{name}.prez"
16
+ end
17
+
18
+ desc "version", "Show the prez version"
19
+ long_desc "
20
+ This can be optionally used as 'prez -v'"
21
+ def version
22
+ say Prez::Version
23
+ end
24
+
25
+ class << self
26
+ def exit_on_failure?
27
+ true
28
+ end
29
+
30
+ def source_root
31
+ File.absolute_path File.expand_path("../../../templates", __FILE__)
32
+ end
33
+ end
34
+ end
35
+ end
data/lib/prez/files.rb ADDED
@@ -0,0 +1,55 @@
1
+ module Prez
2
+ module Files
3
+ class MissingError < StandardError
4
+ def initialize(name, extension)
5
+ super "Could not find file name '#{name}' with extension '#{extension}'"
6
+ end
7
+ end
8
+
9
+ class Paths
10
+ attr_reader :extension, :paths
11
+
12
+ def initialize(extension, dirname)
13
+ @extension = extension
14
+
15
+ @paths = [].tap do |paths|
16
+ paths << File.expand_path(".")
17
+ paths << File.expand_path(File.join(".", dirname))
18
+ paths << File.expand_path(File.join("../../../vendor", dirname), __FILE__)
19
+ end
20
+ end
21
+
22
+ def find(name)
23
+ paths.each do |path|
24
+ file = File.join path, "#{name}.#{extension}"
25
+
26
+ if File.exists?(file)
27
+ return file
28
+ end
29
+ end
30
+
31
+ raise Prez::Files::MissingError.new(name, extension)
32
+ end
33
+ end
34
+
35
+ class << self
36
+ SEARCH_PATHS = {
37
+ "js" => Prez::Files::Paths.new("js", "javascripts"),
38
+ "css" => Prez::Files::Paths.new("css", "stylesheets")
39
+ }
40
+
41
+ def contents(name, extension)
42
+ file = find name, extension
43
+ File.read file
44
+ end
45
+
46
+ def find(name, extension)
47
+ unless SEARCH_PATHS[extension]
48
+ raise Prez::Files::MissingError.new(name, extension)
49
+ end
50
+
51
+ SEARCH_PATHS[extension].find name
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,9 @@
1
+ module Prez
2
+ module Version
3
+ class << self
4
+ def to_s
5
+ "0.0.1"
6
+ end
7
+ end
8
+ end
9
+ end
data/lib/prez.rb ADDED
@@ -0,0 +1 @@
1
+ require "prez/version"
@@ -0,0 +1,10 @@
1
+ <html>
2
+ <head>
3
+ <%%= javascript "jquery" %>
4
+ <%%= javascript "prez" %>
5
+ <%%= stylesheet "prez" %>
6
+ </head>
7
+
8
+ <body>
9
+ </body>
10
+ </html>