spire 0.2.3 → 0.2.4
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/Gemfile +0 -0
- data/Gemfile.lock +0 -0
- data/README.rdoc +0 -0
- data/Rakefile +0 -0
- data/VERSION +1 -1
- data/bin/spire +0 -0
- data/lib/spire/class/MainController.rb +46 -16
- data/lib/spire/error.rb +11 -2
- data/lib/spire/http.rb +6 -0
- data/lib/spire/public.rb +43 -0
- data/lib/spire/resource/mime.rb +31 -0
- data/lib/spire/router.rb +15 -6
- data/lib/spire.rb +1 -0
- data/spire.gemspec +4 -2
- metadata +19 -17
data/Gemfile
CHANGED
File without changes
|
data/Gemfile.lock
CHANGED
File without changes
|
data/README.rdoc
CHANGED
File without changes
|
data/Rakefile
CHANGED
File without changes
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.4
|
data/bin/spire
CHANGED
File without changes
|
@@ -3,31 +3,61 @@ require 'spire/http'
|
|
3
3
|
module Spire
|
4
4
|
class MainController
|
5
5
|
|
6
|
-
def
|
7
|
-
@base_path = base_path
|
8
|
-
end
|
9
|
-
|
10
|
-
def render(view)
|
6
|
+
def render(opts={})
|
11
7
|
data = {}
|
12
8
|
instance_variables.each do |var|
|
13
9
|
data[var] = instance_variable_get(var)
|
14
10
|
end
|
15
11
|
|
16
|
-
|
12
|
+
if opts[:text]
|
13
|
+
return opts[:text]
|
14
|
+
end
|
15
|
+
|
16
|
+
if opts[:file]
|
17
|
+
contents = Public.new :file => "test.html", :render => true
|
18
|
+
file = contents.extension_check
|
19
|
+
return file
|
20
|
+
end
|
21
|
+
if opts[:view].is_a? Array
|
22
|
+
@storage = ""
|
23
|
+
opts[:view].each do |file|
|
24
|
+
file_path = File.join($base_path, 'views', file)
|
25
|
+
return Error.new(:status => 404) unless File.exists?(file_path)
|
26
|
+
contents = IO.read(file_path)
|
27
|
+
extension = File.extname(file_path)
|
28
|
+
|
29
|
+
case extension
|
30
|
+
when '.haml'
|
31
|
+
require 'haml'
|
32
|
+
@storage = @storage + Haml::Engine.new(contents).render(Object.new)
|
33
|
+
when '.rhtml'
|
34
|
+
require 'erubis'
|
35
|
+
eruby = Erubis::Eruby.new(contents)
|
36
|
+
@storage = @storage + eruby.result(data)
|
37
|
+
else
|
38
|
+
@storage = @storage + contents
|
39
|
+
end
|
40
|
+
end
|
41
|
+
return @storage
|
42
|
+
end
|
43
|
+
|
44
|
+
file_path = File.join($base_path, 'views', opts[:view])
|
45
|
+
return Error.new(:status => 404) unless File.exists?(file_path)
|
46
|
+
contents = IO.read(file_path)
|
47
|
+
extension = File.extname(file_path)
|
17
48
|
|
18
|
-
|
19
|
-
|
20
|
-
elsif type == "haml"
|
49
|
+
case extension
|
50
|
+
when '.haml'
|
21
51
|
require 'haml'
|
22
|
-
|
23
|
-
|
24
|
-
elsif type == "rhtml"
|
52
|
+
Haml::Engine.new(contents).render(Object.new)
|
53
|
+
when '.rhtml'
|
25
54
|
require 'erubis'
|
26
|
-
|
27
|
-
eruby
|
28
|
-
|
55
|
+
eruby = Erubis::Eruby.new(contents)
|
56
|
+
eruby.result(data)
|
57
|
+
else
|
58
|
+
contents
|
29
59
|
end
|
30
60
|
end
|
31
61
|
|
32
62
|
end
|
33
|
-
end
|
63
|
+
end
|
data/lib/spire/error.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
module Spire
|
2
2
|
class Error
|
3
|
-
def initialize(
|
3
|
+
def initialize(opts={})
|
4
|
+
status = opts[:status] or 200
|
5
|
+
message = opts[:message] or "Unknown Error"
|
6
|
+
|
4
7
|
case status
|
5
8
|
when 200
|
6
9
|
self.return_error(message, status)
|
@@ -12,6 +15,8 @@ module Spire
|
|
12
15
|
self.return_204
|
13
16
|
when 301
|
14
17
|
self.return_301
|
18
|
+
when 444
|
19
|
+
self.return_444
|
15
20
|
end
|
16
21
|
end
|
17
22
|
|
@@ -34,7 +39,11 @@ module Spire
|
|
34
39
|
def return_error(message, status)
|
35
40
|
@return = Response.new(message, 'text/html;', status)
|
36
41
|
end
|
37
|
-
|
42
|
+
|
43
|
+
def return_444
|
44
|
+
@return = Response.new("No response made by the server, check for a valid response", 'text/html;', 404)
|
45
|
+
end
|
46
|
+
|
38
47
|
def to_rack
|
39
48
|
@return.to_rack
|
40
49
|
end
|
data/lib/spire/http.rb
CHANGED
@@ -7,6 +7,12 @@ module Spire
|
|
7
7
|
@headers = {'Content-Type' => content_type}
|
8
8
|
@status_code = status
|
9
9
|
end
|
10
|
+
|
11
|
+
def manual_response(content, headers, status)
|
12
|
+
@content = content
|
13
|
+
@headers = headers
|
14
|
+
@status_code = status
|
15
|
+
end
|
10
16
|
|
11
17
|
def to_rack
|
12
18
|
[status_code, headers, [content]]
|
data/lib/spire/public.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spire/resource/mime'
|
2
|
+
|
3
|
+
module Spire
|
4
|
+
class Public
|
5
|
+
def initialize(opts={:render=>true})
|
6
|
+
@file = opts[:file]
|
7
|
+
@render = opts[:render]
|
8
|
+
mime = Mime.new
|
9
|
+
@mime_types = mime.return_mimes
|
10
|
+
end
|
11
|
+
|
12
|
+
def extension_check
|
13
|
+
file_extension = File.extname(@file)
|
14
|
+
@mime_types.each do |ext, type|
|
15
|
+
if file_extension == ext
|
16
|
+
@content_type = type
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
if @render
|
21
|
+
self.create_response
|
22
|
+
else
|
23
|
+
return [false, @content_type]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def create_response
|
28
|
+
path = File.expand_path(__FILE__)
|
29
|
+
path["lib/spire/public.rb"] = "public/#{@file}"
|
30
|
+
return Error.new(:status => 404) unless File.exists?(path)
|
31
|
+
file = IO.read(path)
|
32
|
+
@return = {}
|
33
|
+
@return[:file] = file
|
34
|
+
@return[:content_type] = @content_type
|
35
|
+
return @return
|
36
|
+
end
|
37
|
+
|
38
|
+
def to_rack
|
39
|
+
@return.to_rack
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Spire
|
2
|
+
class Mime
|
3
|
+
def return_mimes
|
4
|
+
return @mime_types = {
|
5
|
+
".html" => "text/html",
|
6
|
+
".text" => "text/plain",
|
7
|
+
".js" => "text/javascript",
|
8
|
+
".css" => "text/css",
|
9
|
+
".ics" => "text/calendar",
|
10
|
+
".csv" => "text/csv",
|
11
|
+
|
12
|
+
".png" => "image/png",
|
13
|
+
".jpeg" => "image/jpeg",
|
14
|
+
".gif" => "image/gif",
|
15
|
+
".bmp" => "image/bmp",
|
16
|
+
".tiff" => "image/tiff",
|
17
|
+
|
18
|
+
".mpeg" => "video/mpeg",
|
19
|
+
|
20
|
+
".xml" => "application/xml",
|
21
|
+
".rss" => "application/rss+xml",
|
22
|
+
".atom" => "application/atom+xml",
|
23
|
+
".yaml" => "application/x-yaml",
|
24
|
+
|
25
|
+
".json" => "application/json",
|
26
|
+
".pdf" => "application/pdf",
|
27
|
+
".zip" => "application/zip"
|
28
|
+
}
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/spire/router.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Spire
|
2
2
|
class Router
|
3
3
|
def initialize(base_path, routes)
|
4
|
-
|
4
|
+
$base_path = base_path
|
5
5
|
@routes = routes
|
6
6
|
@app = {}
|
7
7
|
end
|
@@ -35,23 +35,30 @@ module Spire
|
|
35
35
|
end
|
36
36
|
|
37
37
|
unless @app["controller"]
|
38
|
-
return Error.new
|
38
|
+
return Error.new :status => 404
|
39
39
|
end
|
40
40
|
|
41
41
|
return self.run
|
42
42
|
end
|
43
43
|
|
44
44
|
def return_file
|
45
|
-
|
46
|
-
|
45
|
+
result = Public.new :file => "test.html", :render => true
|
46
|
+
file = result.extension_check
|
47
|
+
return Response.new(file[:file], file[:content_type], 200)
|
47
48
|
end
|
48
49
|
|
49
50
|
def run
|
50
|
-
require "#{
|
51
|
-
@class = Kernel.const_get(@app["controller"]).new(
|
51
|
+
require "#{$base_path}/controllers/#{@app["controller"]}Controller"
|
52
|
+
@class = Kernel.const_get(@app["controller"]).new()
|
52
53
|
|
53
54
|
result = @class.method(@app["action"]).call
|
54
55
|
|
56
|
+
if result.is_a? Hash
|
57
|
+
if result[:file]
|
58
|
+
return Response.new(result[:file], result[:content_type], 200)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
55
62
|
content_type = "text/html;"
|
56
63
|
status = 200
|
57
64
|
|
@@ -73,6 +80,8 @@ module Spire
|
|
73
80
|
puts response
|
74
81
|
if response
|
75
82
|
response.to_rack
|
83
|
+
else
|
84
|
+
Error.new :status => 444
|
76
85
|
end
|
77
86
|
end
|
78
87
|
end
|
data/lib/spire.rb
CHANGED
data/spire.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "spire"
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Scott Nicol"]
|
12
|
-
s.date = "2011-10-
|
12
|
+
s.date = "2011-10-19"
|
13
13
|
s.description = "Light rack-based framework with controllers, static views and a router \n with templating engine support coming soon"
|
14
14
|
s.email = "scott@scottnicol.co.uk"
|
15
15
|
s.executables = ["spire"]
|
@@ -27,6 +27,8 @@ Gem::Specification.new do |s|
|
|
27
27
|
"lib/spire/class/MainController.rb",
|
28
28
|
"lib/spire/error.rb",
|
29
29
|
"lib/spire/http.rb",
|
30
|
+
"lib/spire/public.rb",
|
31
|
+
"lib/spire/resource/mime.rb",
|
30
32
|
"lib/spire/router.rb",
|
31
33
|
"spire.gemspec"
|
32
34
|
]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spire
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-10-
|
12
|
+
date: 2011-10-19 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
16
|
-
requirement: &
|
16
|
+
requirement: &70270452034600 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.3.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70270452034600
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rack-rewrite
|
27
|
-
requirement: &
|
27
|
+
requirement: &70270452033320 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.2.1
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70270452033320
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: haml
|
38
|
-
requirement: &
|
38
|
+
requirement: &70270452031420 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 3.1.0
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70270452031420
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: erubis
|
49
|
-
requirement: &
|
49
|
+
requirement: &70270452030140 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 2.7.0
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70270452030140
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: bundler
|
60
|
-
requirement: &
|
60
|
+
requirement: &70270452001980 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.0.0
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70270452001980
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: jeweler
|
71
|
-
requirement: &
|
71
|
+
requirement: &70270452001000 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 1.6.4
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70270452001000
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rcov
|
82
|
-
requirement: &
|
82
|
+
requirement: &70270451999840 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70270451999840
|
91
91
|
description: ! "Light rack-based framework with controllers, static views and a router
|
92
92
|
\n with templating engine support coming soon"
|
93
93
|
email: scott@scottnicol.co.uk
|
@@ -107,6 +107,8 @@ files:
|
|
107
107
|
- lib/spire/class/MainController.rb
|
108
108
|
- lib/spire/error.rb
|
109
109
|
- lib/spire/http.rb
|
110
|
+
- lib/spire/public.rb
|
111
|
+
- lib/spire/resource/mime.rb
|
110
112
|
- lib/spire/router.rb
|
111
113
|
- spire.gemspec
|
112
114
|
homepage: http://github.com/snicol/spire
|
@@ -124,7 +126,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
124
126
|
version: '0'
|
125
127
|
segments:
|
126
128
|
- 0
|
127
|
-
hash:
|
129
|
+
hash: 829611496356220362
|
128
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
131
|
none: false
|
130
132
|
requirements:
|