spire 0.4.9 → 0.4.10

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 CHANGED
@@ -8,6 +8,5 @@ gem "erubis", ">= 2.7.0"
8
8
  group :development do
9
9
  gem "bundler", ">= 1.0.0"
10
10
  gem "jeweler", ">= 1.6.4"
11
- gem "simplecov", ">= 0.6.0"
12
11
  end
13
12
 
data/Gemfile.lock CHANGED
@@ -11,10 +11,6 @@ GEM
11
11
  multi_json (1.3.6)
12
12
  rack (1.3.5)
13
13
  rake (0.9.2.2)
14
- simplecov (0.6.4)
15
- multi_json (~> 1.0)
16
- simplecov-html (~> 0.5.3)
17
- simplecov-html (0.5.3)
18
14
 
19
15
  PLATFORMS
20
16
  ruby
@@ -25,4 +21,3 @@ DEPENDENCIES
25
21
  haml (>= 3.1.0)
26
22
  jeweler (>= 1.6.4)
27
23
  rack (>= 1.3.0)
28
- simplecov (>= 0.6.0)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.9
1
+ 0.4.10
@@ -1,4 +1,4 @@
1
- require 'spire/http'
1
+ require 'spire/response'
2
2
  require 'spire/resource/buffer'
3
3
 
4
4
  module Spire
@@ -6,8 +6,9 @@ module Spire
6
6
  class MainController
7
7
  attr_accessor :buffer
8
8
 
9
- def initialize
9
+ def initialize(request)
10
10
  @buffer = Buffer.new
11
+ @request = request
11
12
  end
12
13
 
13
14
  def get_buffer
@@ -25,7 +26,8 @@ module Spire
25
26
  end
26
27
 
27
28
  if opts[:view]
28
- file_path = File.join($base_path, 'views', opts[:view])
29
+ file_path = File.expand_path(__FILE__)
30
+ file_path["lib/spire/class/MainController.rb"] = "app/views/#{opts[:view]}"
29
31
  return 404 unless File.exists?(file_path)
30
32
  contents = IO.read(file_path)
31
33
  extension = File.extname(file_path)
data/lib/spire/map.rb ADDED
@@ -0,0 +1,37 @@
1
+ module Spire
2
+ class Map
3
+ attr_accessor :auto
4
+
5
+ def initialize
6
+ @maps = Hash.new({})
7
+ @auto = false
8
+ end
9
+
10
+ def route(opts={})
11
+ @maps[opts[:url]] = opts[:to]
12
+ end
13
+
14
+ def get(url)
15
+ return @maps[url]
16
+ end
17
+
18
+ def should_use_auto(url)
19
+ if @maps[url] == {} && @auto
20
+ return true
21
+ end
22
+ end
23
+
24
+ def exists?(url)
25
+ if @maps[url] == {}
26
+ return false
27
+ else
28
+ return true
29
+ end
30
+ end
31
+
32
+ def disect(request)
33
+ return request.split("/")
34
+ end
35
+
36
+ end
37
+ end
data/lib/spire/public.rb CHANGED
@@ -5,36 +5,29 @@ module Spire
5
5
  def initialize(opts={:render=>true})
6
6
  @opts = opts
7
7
  end
8
-
9
- def extension_check
10
- file_extension = File.extname(@opts[:file])
11
- Mime.return_mimes.each do |ext, type|
12
- if file_extension == ext
13
- @content_type = type
14
- end
15
- end
16
-
17
- if @opts[:render]
18
- self.create_response
19
- else
20
- return [false, @content_type]
21
- end
22
- end
23
8
 
24
9
  def self.return_file(file)
25
- result = Public.new :file => file, :render => true
26
- file = result.extension_check
27
- puts file
28
- if file == 404
29
- return Error.return_error :status => 404, :message => "404 // File not found"
10
+ file_object = Public.new :file => file, :render => true
11
+ file = file_object.create_response
12
+
13
+ if file == 404
14
+ return Error.return_error :status => 404
30
15
  else
31
16
  return Response.new(file[:file], file[:content_type], 200)
32
17
  end
33
18
  end
34
19
 
35
20
  def create_response
21
+ file_extension = File.extname(@opts[:file])
22
+ Mime.return_mimes ? @content_type = Mime.return_mimes[file_extension] : false
23
+
24
+ if !@opts[:render]
25
+ return [false, @content_type]
26
+ end
27
+
36
28
  path = File.expand_path(__FILE__)
37
29
  path["lib/spire/public.rb"] = "public/#{@opts[:file]}"
30
+
38
31
  if File.exists?(path)
39
32
  file = IO.read(path)
40
33
  @return = {}
@@ -2,7 +2,7 @@ module Spire
2
2
  class Response
3
3
  attr_accessor :status_code, :headers, :content
4
4
 
5
- def initialize(content='', content_type='text/html; charset=utf8', status=200)
5
+ def initialize(content='', content_type='text/html; charset=utf8', status=200, manual_headers=nil)
6
6
  @content = content
7
7
  @headers = {'Content-Type' => content_type}
8
8
  @status_code = status
data/lib/spire/router.rb CHANGED
@@ -1,54 +1,37 @@
1
1
  module Spire
2
2
  class Router
3
- def initialize(base_path, routes)
4
- $base_path = base_path
5
- @routes = routes
6
- @app = {}
3
+ def initialize(map)
4
+ @map = map
7
5
  end
8
6
 
9
- def disect(env)
10
- req = env['REQUEST_PATH'].split("/")
11
- @request = {"controller" => req[1], "action" => req[2]}
12
- end
7
+ def route(env)
8
+ request = Rack::Request.new(env)
9
+ request_path = env["REQUEST_PATH"]
13
10
 
14
- def route
15
- @app["controller"] = nil
16
-
17
- if @request["controller"] == "favicon.ico"
18
- favicon = Public.return_file("favicon.ico")
19
- return favicon
11
+ if request_path == "/favicon.ico"
12
+ return Public.return_file "favicon.ico"
20
13
  end
21
-
22
- if @request["controller"] == nil
23
- route = @routes['default'].split("#")
24
- @app["controller"] = route[0].capitalize
25
- @app["action"] = route[1]
26
- else
27
- @routes.each do |key, value|
28
- keys = key.split("/")
29
- values = value.split("#")
30
- if @request["controller"] == keys[1] && @request["action"] == keys[3]
31
- @app["controller"] = values[0].capitalize
32
- @app["action"] = values[1]
33
- elsif @request["controller"] == keys[1]
34
- @app["controller"] = values[0].capitalize
35
- @app["action"] = values[1]
36
- end
37
- end
14
+
15
+ if !@map.exists? request_path
16
+ return Error.return_error :message => "No route was not found!", :status => 404
38
17
  end
39
-
40
- if !@app["controller"]
41
- return Error.return_error :message => "Route not found in system/routes.rb", :status => 404
18
+
19
+ if @map.should_use_auto(request_path)
20
+ params = @map.disect(request_path)
21
+ return self.run({:controller => params[1], :action => params[2]})
42
22
  end
43
-
44
- return self.run
23
+
24
+ return self.run(@map.get(request_path), request)
45
25
  end
46
26
 
47
- def run
48
- require "#{$base_path}/controllers/#{@app["controller"]}Controller"
49
- @class = Kernel.const_get(@app["controller"]).new()
27
+ def run(maps_to, request)
28
+ path = File.expand_path(__FILE__)
29
+ path["lib/spire/router.rb"] = "app/controllers"
30
+
31
+ require "#{path}/#{maps_to[:controller].capitalize}Controller.rb"
32
+ @class = Kernel.const_get(maps_to[:controller].capitalize).new(request)
50
33
 
51
- result = @class.method(@app["action"]).call
34
+ result = @class.method(maps_to[:action]).call
52
35
  buffer = @class.get_buffer
53
36
 
54
37
  if !buffer && !result
@@ -63,7 +46,7 @@ module Spire
63
46
  end
64
47
 
65
48
  if @class.instance_variable_get(:@content_type)
66
- content_type = @class.instance_variable_get(:content_type)
49
+ content_type = @class.instance_variable_get(:@content_type)
67
50
  end
68
51
 
69
52
  if result
@@ -74,8 +57,7 @@ module Spire
74
57
  end
75
58
 
76
59
  def call(env)
77
- self.disect(env)
78
- response = self.route
60
+ response = self.route(env)
79
61
 
80
62
  puts response
81
63
  if response
@@ -5,7 +5,7 @@
5
5
  body {
6
6
  font-family: 'Helvetica Neue';
7
7
  padding-left: 30px;
8
- background: #fafafa;
8
+ background: #fff;
9
9
  padding: 0;
10
10
  margin: 0;
11
11
  margin-bottom: 100px;
@@ -21,29 +21,7 @@
21
21
  padding-left: 5%;
22
22
  padding-right: 5%;
23
23
  }
24
- #trace {
25
- font-size: 1.2em;
26
- width: 80%;
27
- margin-left: auto;
28
- margin-right: auto;
29
- border: 2px solid #D64C49;
30
- padding-top: 30px;
31
- padding-bottom: 30px;
32
- }
33
- #footer {
34
- position: fixed;
35
- bottom: 0px;
36
- height: 45px;
37
- width: 100%;
38
- background-color: #E0FFD3;
39
- border-top: 2px solid #484939;
40
- }
24
+
41
25
  %body
42
26
  %h1= @error_code
43
27
  %p= @error_message
44
- - if @extended_message
45
- %p#trace= @extended_message
46
- #footer
47
- %a{:href => "http://spire.heroku.com"} Powered by Spire
48
- #cocoon
49
- %a{:href => "http://wearecocoon.com"} by Cocoon
data/lib/spire.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'spire/error'
2
+ require 'spire/map'
2
3
  require 'spire/router'
3
- require 'spire/http'
4
+ require 'spire/response'
4
5
  require 'spire/public'
5
6
 
6
7
  require 'spire/class/MainController'
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.4.9"
8
+ s.version = "0.4.10"
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 = "2012-08-11"
12
+ s.date = "2012-08-29"
13
13
  s.description = "Light rack-based framework with controllers, HAML/ERB views, router & error handler"
14
14
  s.email = "scott@scottnicol.co.uk"
15
15
  s.executables = ["spire"]
@@ -26,10 +26,11 @@ Gem::Specification.new do |s|
26
26
  "lib/spire.rb",
27
27
  "lib/spire/class/MainController.rb",
28
28
  "lib/spire/error.rb",
29
- "lib/spire/http.rb",
29
+ "lib/spire/map.rb",
30
30
  "lib/spire/public.rb",
31
31
  "lib/spire/resource/buffer.rb",
32
32
  "lib/spire/resource/mime.rb",
33
+ "lib/spire/response.rb",
33
34
  "lib/spire/router.rb",
34
35
  "lib/spire/templates/error/error.haml",
35
36
  "spire.gemspec"
@@ -49,14 +50,12 @@ Gem::Specification.new do |s|
49
50
  s.add_runtime_dependency(%q<erubis>, [">= 2.7.0"])
50
51
  s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
51
52
  s.add_development_dependency(%q<jeweler>, [">= 1.6.4"])
52
- s.add_development_dependency(%q<simplecov>, [">= 0.6.0"])
53
53
  else
54
54
  s.add_dependency(%q<rack>, [">= 1.3.0"])
55
55
  s.add_dependency(%q<haml>, [">= 3.1.0"])
56
56
  s.add_dependency(%q<erubis>, [">= 2.7.0"])
57
57
  s.add_dependency(%q<bundler>, [">= 1.0.0"])
58
58
  s.add_dependency(%q<jeweler>, [">= 1.6.4"])
59
- s.add_dependency(%q<simplecov>, [">= 0.6.0"])
60
59
  end
61
60
  else
62
61
  s.add_dependency(%q<rack>, [">= 1.3.0"])
@@ -64,7 +63,6 @@ Gem::Specification.new do |s|
64
63
  s.add_dependency(%q<erubis>, [">= 2.7.0"])
65
64
  s.add_dependency(%q<bundler>, [">= 1.0.0"])
66
65
  s.add_dependency(%q<jeweler>, [">= 1.6.4"])
67
- s.add_dependency(%q<simplecov>, [">= 0.6.0"])
68
66
  end
69
67
  end
70
68
 
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.4.9
4
+ version: 0.4.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-11 00:00:00.000000000 Z
12
+ date: 2012-08-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
@@ -91,22 +91,6 @@ dependencies:
91
91
  - - ! '>='
92
92
  - !ruby/object:Gem::Version
93
93
  version: 1.6.4
94
- - !ruby/object:Gem::Dependency
95
- name: simplecov
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ! '>='
100
- - !ruby/object:Gem::Version
101
- version: 0.6.0
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: 0.6.0
110
94
  description: Light rack-based framework with controllers, HAML/ERB views, router &
111
95
  error handler
112
96
  email: scott@scottnicol.co.uk
@@ -125,10 +109,11 @@ files:
125
109
  - lib/spire.rb
126
110
  - lib/spire/class/MainController.rb
127
111
  - lib/spire/error.rb
128
- - lib/spire/http.rb
112
+ - lib/spire/map.rb
129
113
  - lib/spire/public.rb
130
114
  - lib/spire/resource/buffer.rb
131
115
  - lib/spire/resource/mime.rb
116
+ - lib/spire/response.rb
132
117
  - lib/spire/router.rb
133
118
  - lib/spire/templates/error/error.haml
134
119
  - spire.gemspec
@@ -147,7 +132,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
147
132
  version: '0'
148
133
  segments:
149
134
  - 0
150
- hash: -3109762138428974111
135
+ hash: 3764740053052310701
151
136
  required_rubygems_version: !ruby/object:Gem::Requirement
152
137
  none: false
153
138
  requirements: