spire 0.2.0 → 0.2.2

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
@@ -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