prez 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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>