spire 0.2.0 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,7 +1,7 @@
1
- source "http://rubygems.org"
2
-
3
1
  gem "rack", ">= 1.3.0"
2
+
4
3
  gem "haml", ">= 3.1.0"
4
+ gem "erubis", ">= 2.7.0"
5
5
 
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
@@ -10,3 +10,4 @@ group :development do
10
10
  gem "jeweler", "~> 1.6.4"
11
11
  gem "rcov", ">= 0"
12
12
  end
13
+
data/Gemfile.lock CHANGED
@@ -1,6 +1,6 @@
1
1
  GEM
2
- remote: http://rubygems.org/
3
2
  specs:
3
+ erubis (2.7.0)
4
4
  git (1.2.5)
5
5
  haml (3.1.3)
6
6
  jeweler (1.6.4)
@@ -16,6 +16,7 @@ PLATFORMS
16
16
 
17
17
  DEPENDENCIES
18
18
  bundler (~> 1.0.0)
19
+ erubis (>= 2.7.0)
19
20
  haml (>= 3.1.0)
20
21
  jeweler (~> 1.6.4)
21
22
  rack (>= 1.3.0)
data/README.rdoc CHANGED
@@ -70,4 +70,5 @@ More documentation will be coming soon as more features are being added
70
70
  === SASS Support
71
71
  === Improved Response handler
72
72
  === Lots of bugfixes
73
- === Some secret goodes!
73
+ === Some secret goodes!
74
+
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.2
@@ -1,6 +1,5 @@
1
1
  require 'spire/http'
2
- require 'haml'
3
-
2
+
4
3
  module Spire
5
4
  class MainController
6
5
 
@@ -8,12 +7,25 @@ module Spire
8
7
  @base_path = base_path
9
8
  end
10
9
 
11
- def render(view, type="haml", data="")
10
+ def render(view)
11
+ data = {}
12
+ instance_variables.each do |var|
13
+ data[var] = instance_variable_get(var)
14
+ end
15
+
16
+ type = view.split('.')[1]
17
+
12
18
  if type == "html"
13
- File.open(@base_path+'/views/'+view+'.html', 'r').read
19
+ File.open(@base_path+'/views/'+view, 'r').read
14
20
  elsif type == "haml"
15
- file = File.open(@base_path+'/views/'+view+'.haml', 'r').read
16
- Haml::Engine.new(file).render(Object.new, :data => data)
21
+ require 'haml'
22
+ file = File.open(@base_path+'/views/'+view, 'r').read
23
+ Haml::Engine.new(file).render(Object.new, data)
24
+ elsif type == "rhtml"
25
+ require 'erubis'
26
+ file = File.open(@base_path+'/views/'+view, 'r').read
27
+ eruby = Erubis::Eruby.new(file)
28
+ return eruby.result(data)
17
29
  end
18
30
  end
19
31
 
@@ -0,0 +1,11 @@
1
+ module Spire
2
+ class Error
3
+ def initialize(message, status='200')
4
+ @return = Response.new(message, 'text/html; charset=uft8;', status)
5
+ end
6
+
7
+ def to_rack
8
+ @return.to_rack
9
+ end
10
+ end
11
+ end
data/lib/spire/router.rb CHANGED
@@ -7,55 +7,68 @@ module Spire
7
7
 
8
8
  def disect(env)
9
9
  req = env['REQUEST_PATH'].split("/")
10
- @request = {}
11
- @request[:controller] = req[1]
12
- @request[:action] = req[2]
10
+ @request = {"controller" => req[1], "action" => req[2]}
13
11
  end
14
12
 
15
13
  def route
16
14
  @controller_value = nil
17
15
  @action_value = nil
18
- if @request[:controller] == nil
16
+ if @request["controller"] == "favicon.ico"
17
+ return Response.new(File.open("public/favicon.ico", 'r').read, "image/ico;")
18
+ end
19
+ if @request["controller"] == nil
19
20
  route = @routes['default'].split("#")
20
21
  @controller_value = route[0].capitalize
21
- if @request[:action] == nil
22
- @action_value = "index"
23
- else
24
- @action_value = route[1]
25
- end
22
+ @action_value = route[1]
26
23
  else
27
24
  @routes.each do |key, value|
28
25
  keys = key.split("/")
29
26
  values = value.split("#")
30
- if @request[:controller] == keys[1] && @request[:action] == keys[3]
27
+ if @request["controller"] == keys[1] && @request["action"] == keys[3]
28
+ puts values[0]
31
29
  @controller_value = values[0].capitalize
30
+ puts @controller_value
32
31
  @action_value = values[1]
33
- elsif @request[:controller] == keys[1]
32
+ elsif @request["controller"] == keys[1]
33
+ puts values[0]
34
34
  @controller_value = values[0].capitalize
35
- @action_value = values[1]
35
+ puts @controller_value
36
+ @action_value = values[1]
36
37
  end
37
38
  end
38
39
  end
39
- unless @controller_value
40
- return Response.new('404 - Page or route not found!')
41
- else
42
- return self.run
43
- end
40
+ unless @controller_value
41
+ return Error.new("<title>404</title><body><h2>404 // Page not found</h2></body>")
42
+ end
43
+ return self.run
44
44
  end
45
-
45
+
46
46
  def run
47
47
  require "#{@base_path}/controllers/#{@controller_value}Controller"
48
48
  @app = Kernel.const_get(@controller_value).new(@base_path)
49
- return @app.method(@action_value).call
49
+
50
+ result = @app.method(@action_value).call
51
+ content_type = "text/html;"
52
+ status = 200
53
+
54
+ if @app.instance_variable_get(:@status)
55
+ status = @app.instance_variable_get(:@status)
56
+ end
57
+ if @app.instance_variable_get(:@content_type)
58
+ content_type = @app.instance_variable_get(:content_type)
59
+ end
60
+
61
+ return Response.new(result, content_type, status)
50
62
  end
51
63
 
52
64
  def call(env)
53
65
  self.disect(env)
54
66
  response = self.route
67
+
55
68
  puts response
56
69
  if response
57
70
  response.to_rack
58
71
  end
59
72
  end
60
73
  end
61
- end
74
+ end
data/lib/spire.rb CHANGED
@@ -1,3 +1,6 @@
1
+ require 'spire/error'
1
2
  require 'spire/router'
3
+ require 'spire/http'
4
+
2
5
  require 'spire/class/MainController'
3
6
 
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.0"
8
+ s.version = "0.2.2"
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-09-27"
12
+ s.date = "2011-10-06"
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"]
@@ -17,21 +17,18 @@ Gem::Specification.new do |s|
17
17
  "README.rdoc"
18
18
  ]
19
19
  s.files = [
20
- ".document",
21
20
  "Gemfile",
22
21
  "Gemfile.lock",
23
22
  "README.rdoc",
24
23
  "Rakefile",
25
24
  "VERSION",
26
25
  "bin/spire",
27
- "config.ru",
28
26
  "lib/spire.rb",
29
27
  "lib/spire/class/MainController.rb",
28
+ "lib/spire/error.rb",
30
29
  "lib/spire/http.rb",
31
30
  "lib/spire/router.rb",
32
- "spire.gemspec",
33
- "test/helper.rb",
34
- "test/test_spire.rb"
31
+ "spire.gemspec"
35
32
  ]
36
33
  s.homepage = "http://github.com/snicol/spire"
37
34
  s.licenses = ["MIT"]
@@ -45,12 +42,14 @@ Gem::Specification.new do |s|
45
42
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
46
43
  s.add_runtime_dependency(%q<rack>, [">= 1.3.0"])
47
44
  s.add_runtime_dependency(%q<haml>, [">= 3.1.0"])
45
+ s.add_runtime_dependency(%q<erubis>, [">= 2.7.0"])
48
46
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
49
47
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
50
48
  s.add_development_dependency(%q<rcov>, [">= 0"])
51
49
  else
52
50
  s.add_dependency(%q<rack>, [">= 1.3.0"])
53
51
  s.add_dependency(%q<haml>, [">= 3.1.0"])
52
+ s.add_dependency(%q<erubis>, [">= 2.7.0"])
54
53
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
55
54
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
56
55
  s.add_dependency(%q<rcov>, [">= 0"])
@@ -58,6 +57,7 @@ Gem::Specification.new do |s|
58
57
  else
59
58
  s.add_dependency(%q<rack>, [">= 1.3.0"])
60
59
  s.add_dependency(%q<haml>, [">= 3.1.0"])
60
+ s.add_dependency(%q<erubis>, [">= 2.7.0"])
61
61
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
62
62
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
63
63
  s.add_dependency(%q<rcov>, [">= 0"])
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.0
4
+ version: 0.2.2
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-09-27 00:00:00.000000000Z
12
+ date: 2011-10-06 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
16
- requirement: &70198527649580 !ruby/object:Gem::Requirement
16
+ requirement: &70150248916120 !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: *70198527649580
24
+ version_requirements: *70150248916120
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: haml
27
- requirement: &70198527648940 !ruby/object:Gem::Requirement
27
+ requirement: &70150248915580 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,21 @@ dependencies:
32
32
  version: 3.1.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70198527648940
35
+ version_requirements: *70150248915580
36
+ - !ruby/object:Gem::Dependency
37
+ name: erubis
38
+ requirement: &70150248915020 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: 2.7.0
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70150248915020
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: bundler
38
- requirement: &70198527642920 !ruby/object:Gem::Requirement
49
+ requirement: &70150248914520 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ~>
@@ -43,10 +54,10 @@ dependencies:
43
54
  version: 1.0.0
44
55
  type: :development
45
56
  prerelease: false
46
- version_requirements: *70198527642920
57
+ version_requirements: *70150248914520
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: jeweler
49
- requirement: &70198527641760 !ruby/object:Gem::Requirement
60
+ requirement: &70150248914020 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ~>
@@ -54,10 +65,10 @@ dependencies:
54
65
  version: 1.6.4
55
66
  type: :development
56
67
  prerelease: false
57
- version_requirements: *70198527641760
68
+ version_requirements: *70150248914020
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: rcov
60
- requirement: &70198527640160 !ruby/object:Gem::Requirement
71
+ requirement: &70150248913480 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ! '>='
@@ -65,7 +76,7 @@ dependencies:
65
76
  version: '0'
66
77
  type: :development
67
78
  prerelease: false
68
- version_requirements: *70198527640160
79
+ version_requirements: *70150248913480
69
80
  description: ! "Light rack-based framework with controllers, static views and a router
70
81
  \n with templating engine support coming soon"
71
82
  email: scott@scottnicol.co.uk
@@ -75,21 +86,18 @@ extensions: []
75
86
  extra_rdoc_files:
76
87
  - README.rdoc
77
88
  files:
78
- - .document
79
89
  - Gemfile
80
90
  - Gemfile.lock
81
91
  - README.rdoc
82
92
  - Rakefile
83
93
  - VERSION
84
94
  - bin/spire
85
- - config.ru
86
95
  - lib/spire.rb
87
96
  - lib/spire/class/MainController.rb
97
+ - lib/spire/error.rb
88
98
  - lib/spire/http.rb
89
99
  - lib/spire/router.rb
90
100
  - spire.gemspec
91
- - test/helper.rb
92
- - test/test_spire.rb
93
101
  homepage: http://github.com/snicol/spire
94
102
  licenses:
95
103
  - MIT
@@ -105,7 +113,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
105
113
  version: '0'
106
114
  segments:
107
115
  - 0
108
- hash: -1664516455746204772
116
+ hash: 98693962747438593
109
117
  required_rubygems_version: !ruby/object:Gem::Requirement
110
118
  none: false
111
119
  requirements:
data/.document DELETED
@@ -1,5 +0,0 @@
1
- lib/**/*.rb
2
- bin/*
3
- -
4
- features/**/*.feature
5
- LICENSE.txt
data/config.ru DELETED
@@ -1,12 +0,0 @@
1
- $:.unshift File.join(File.dirname(__FILE__), 'lib')
2
-
3
- require 'rack'
4
- require 'spire'
5
-
6
- path = File.expand_path(__FILE__)
7
- path["config.ru"] = "app"
8
-
9
- run Spire::Router.new(path, {
10
- "default" => "index#index", # the default route!
11
- "/index" => "index#index",
12
- })
data/test/helper.rb DELETED
@@ -1,18 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler'
3
- begin
4
- Bundler.setup(:default, :development)
5
- rescue Bundler::BundlerError => e
6
- $stderr.puts e.message
7
- $stderr.puts "Run `bundle install` to install missing gems"
8
- exit e.status_code
9
- end
10
- require 'test/unit'
11
- require 'shoulda'
12
-
13
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
- $LOAD_PATH.unshift(File.dirname(__FILE__))
15
- require 'spire'
16
-
17
- class Test::Unit::TestCase
18
- end
data/test/test_spire.rb DELETED
@@ -1,7 +0,0 @@
1
- require 'helper'
2
-
3
- class TestSpire < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
6
- end
7
- end