blossom 0.0.5 → 0.0.6
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/bin/blossom +18 -5
- data/lib/blossom.rb +38 -4
- metadata +3 -3
data/bin/blossom
CHANGED
@@ -9,8 +9,22 @@ def make_file(name, content)
|
|
9
9
|
File.open(name, "w") { |file| file.write(content) }
|
10
10
|
end
|
11
11
|
|
12
|
-
|
13
|
-
|
12
|
+
def print_usage
|
13
|
+
warn "Usage: #$0 PROJECT-NAME"
|
14
|
+
end
|
15
|
+
|
16
|
+
if ARGV.empty?
|
17
|
+
print_usage
|
18
|
+
elsif ARGV[0].start_with? "-"
|
19
|
+
case ARGV[0]
|
20
|
+
when "--version", "-v"
|
21
|
+
puts Blossom::VERSION
|
22
|
+
when "--help", "-h", "-?"
|
23
|
+
print_usage
|
24
|
+
else
|
25
|
+
warn "#$0: unrecognized option: #{ARGV[0]}"
|
26
|
+
end
|
27
|
+
else
|
14
28
|
name = ARGV.first
|
15
29
|
name_symbol = name =~ /\W/ ? ":'#{name}'" : ":#{name}"
|
16
30
|
unless File.exist? name
|
@@ -24,7 +38,7 @@ require "rubygems"
|
|
24
38
|
require "bundler/setup"
|
25
39
|
require "blossom"
|
26
40
|
|
27
|
-
run Blossom(__FILE__, #{name_symbol})
|
41
|
+
run Blossom(__FILE__, #{name_symbol}, :cache => [1, :year])
|
28
42
|
end_file
|
29
43
|
|
30
44
|
make_file "Gemfile", <<-"end_file"
|
@@ -65,12 +79,11 @@ This will run your application at <http://localhost:9292/>.\n\
|
|
65
79
|
You can start hacking in \`#{name}.haml\' and \`#{name}.sass\'.\n\
|
66
80
|
If you create \`x.haml\', it will show up at <http://localhost:9292/x>.\n\
|
67
81
|
Images and other static files go in the \`static/\' directory.\n\
|
82
|
+
In production, your pages are cached; configure this in \`config.ru\'.
|
68
83
|
Good luck, have fun!\n\
|
69
84
|
"
|
70
85
|
else
|
71
86
|
warn "#$0: error: file already exists: #{name}"
|
72
87
|
exit -1
|
73
88
|
end
|
74
|
-
else
|
75
|
-
warn "Usage: #$0 PROJECT-NAME"
|
76
89
|
end
|
data/lib/blossom.rb
CHANGED
@@ -7,18 +7,18 @@ require "rack/strip-www"
|
|
7
7
|
require "hassle"
|
8
8
|
|
9
9
|
module Blossom
|
10
|
-
VERSION = "0.0.
|
10
|
+
VERSION = "0.0.6"
|
11
11
|
end
|
12
12
|
|
13
|
-
def Blossom(root_file, index = :index)
|
13
|
+
def Blossom(root_file, index = :index, options = {})
|
14
14
|
Rack::Builder.app do
|
15
15
|
use Rack::StripWWW
|
16
16
|
use Hassle
|
17
|
-
run Blossom::Base(root_file, index)
|
17
|
+
run Blossom::Base(root_file, index, options)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
def Blossom::Base(root_file, index = :index)
|
21
|
+
def Blossom::Base(root_file, index = :index, blossom_options = {})
|
22
22
|
root = File.dirname(root_file)
|
23
23
|
Class.new(Sinatra::Base).tap do |app|
|
24
24
|
app.class_eval do
|
@@ -43,17 +43,51 @@ def Blossom::Base(root_file, index = :index)
|
|
43
43
|
end
|
44
44
|
|
45
45
|
get "/" do
|
46
|
+
headers blossom_headers
|
46
47
|
haml settings.index
|
47
48
|
end
|
48
49
|
|
49
50
|
get "/:name.css", :file_exists? => :sass do
|
51
|
+
headers blossom_headers
|
50
52
|
content_type "text/css", :charset => "utf-8"
|
51
53
|
sass params[:name].to_sym
|
52
54
|
end
|
53
55
|
|
54
56
|
get "/:name", :file_exists? => :haml do
|
57
|
+
headers blossom_headers
|
55
58
|
haml params[:name].to_sym
|
56
59
|
end
|
60
|
+
|
61
|
+
define_method :blossom_headers do
|
62
|
+
if blossom_options.include? :cache
|
63
|
+
seconds = get_seconds(*blossom_options[:cache])
|
64
|
+
{ 'Cache-Control' => "public, max-age=#{seconds}" }
|
65
|
+
else
|
66
|
+
{}
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def get_seconds(value, unit)
|
71
|
+
days = 60 * 60 * 24
|
72
|
+
case unit
|
73
|
+
when :seconds, :second
|
74
|
+
value
|
75
|
+
when :minutes, :minute
|
76
|
+
value * 60
|
77
|
+
when :hours, :hour
|
78
|
+
value * 60 * 60
|
79
|
+
when :days, :day
|
80
|
+
value * days
|
81
|
+
when :weeks, :week
|
82
|
+
value * days * 7
|
83
|
+
when :months, :month
|
84
|
+
value * days * 30
|
85
|
+
when :years, :year
|
86
|
+
value * days * 365
|
87
|
+
else
|
88
|
+
raise ArgumentError, "Unrecognized unit: #{unit}"
|
89
|
+
end
|
90
|
+
end
|
57
91
|
end
|
58
92
|
end
|
59
93
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 6
|
9
|
+
version: 0.0.6
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Daniel Brockman
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-10-
|
17
|
+
date: 2010-10-28 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|