mack 0.8.0 → 0.8.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +3 -0
- data/lib/mack/controller/controller.rb +1 -1
- data/lib/mack/rendering/type/action.rb +1 -1
- data/lib/mack/rendering/type/file_base.rb +1 -1
- data/lib/mack/rendering/type/inline.rb +2 -2
- data/lib/mack/rendering/type/layout.rb +1 -1
- data/lib/mack/rendering/type/partial.rb +2 -2
- data/lib/mack/rendering/type/public.rb +2 -2
- data/lib/mack/rendering/type/template.rb +1 -1
- data/lib/mack/rendering/type/text.rb +1 -1
- data/lib/mack/rendering/type/url.rb +4 -4
- data/lib/mack/rendering/type/xml.rb +3 -3
- data/lib/mack/rendering/view_template.rb +28 -28
- data/lib/mack/version.rb +1 -1
- metadata +2 -2
data/CHANGELOG
CHANGED
@@ -28,7 +28,7 @@ module Mack
|
|
28
28
|
# Example:
|
29
29
|
# app/views/users/show.html.erb
|
30
30
|
def render
|
31
|
-
a_file = File.join(self.controller_view_path, "#{self.
|
31
|
+
a_file = File.join(self.controller_view_path, "#{self._render_value}.#{self._options[:format]}")
|
32
32
|
render_file(a_file)
|
33
33
|
end
|
34
34
|
|
@@ -13,7 +13,7 @@ module Mack
|
|
13
13
|
Mack::Rendering::Engine::Registry.engines[type].each do |e|
|
14
14
|
@engine = find_engine(e).new(self.view_template)
|
15
15
|
find_file(file + ".#{@engine.extension}") do |f|
|
16
|
-
return @engine.render(File.new(f), self.
|
16
|
+
return @engine.render(File.new(f), self._binder)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
raise Mack::Errors::ResourceNotFound.new(file + ".*")
|
@@ -10,8 +10,8 @@ module Mack
|
|
10
10
|
class Inline < Mack::Rendering::Type::Base
|
11
11
|
|
12
12
|
def render
|
13
|
-
@engine = find_engine((self.
|
14
|
-
return @engine.render(self.
|
13
|
+
@engine = find_engine((self._options[:engine] || :erubis)).new(self.view_template)
|
14
|
+
return @engine.render(self._render_value, self._binder)
|
15
15
|
end
|
16
16
|
|
17
17
|
# Passes concatenation messages through to the Mack::Rendering::Engine object.
|
@@ -12,7 +12,7 @@ module Mack
|
|
12
12
|
# Example:
|
13
13
|
# app/views/layouts/application.html.erb
|
14
14
|
def render
|
15
|
-
l_file = Mack::Paths.layouts("#{self.
|
15
|
+
l_file = Mack::Paths.layouts("#{self._options[:layout]}.#{self._options[:format]}")
|
16
16
|
begin
|
17
17
|
render_file(l_file, :layout)
|
18
18
|
rescue Mack::Errors::ResourceNotFound => e
|
@@ -15,7 +15,7 @@ module Mack
|
|
15
15
|
# Example:
|
16
16
|
# app/views/users/_form.html.erb
|
17
17
|
def render
|
18
|
-
partial = self.
|
18
|
+
partial = self._render_value.to_s
|
19
19
|
parts = partial.split("/")
|
20
20
|
if parts.size == 1
|
21
21
|
# it's local to this controller
|
@@ -26,7 +26,7 @@ module Mack
|
|
26
26
|
parts[parts.size - 1] = "_" << parts.last
|
27
27
|
partial = Mack::Paths.views(parts)
|
28
28
|
end
|
29
|
-
partial = "#{partial}.#{self.
|
29
|
+
partial = "#{partial}.#{self._options[:format]}"
|
30
30
|
render_file(partial, :partial)
|
31
31
|
end
|
32
32
|
|
@@ -9,9 +9,9 @@ module Mack
|
|
9
9
|
# Attempts to find the file on disk and return it. If no file extension is provided then the 'format'
|
10
10
|
# of the request is appended to the file name.
|
11
11
|
def render
|
12
|
-
p_file = self.
|
12
|
+
p_file = self._render_value
|
13
13
|
if File.extname(p_file).blank?
|
14
|
-
p_file = "#{p_file}.#{self.
|
14
|
+
p_file = "#{p_file}.#{self._options[:format]}"
|
15
15
|
end
|
16
16
|
find_file(Mack::Paths.public(p_file)) do |f|
|
17
17
|
return File.open(f).read
|
@@ -13,7 +13,7 @@ module Mack
|
|
13
13
|
# Example:
|
14
14
|
# <%= render(:template, "users/show") %> # => app/views/users/show.html.erb
|
15
15
|
def render
|
16
|
-
t_file = Mack::Paths.views("#{self.
|
16
|
+
t_file = Mack::Paths.views("#{self._render_value}.#{self._options[:format]}")
|
17
17
|
render_file(t_file, :template)
|
18
18
|
end
|
19
19
|
|
@@ -32,8 +32,8 @@ module Mack
|
|
32
32
|
|
33
33
|
# Retrieves the contents of the url using either GET or POST, passing along any specified parameters.
|
34
34
|
def render
|
35
|
-
options = {:method => :get, :raise_exception => false}.merge(self.
|
36
|
-
url = self.
|
35
|
+
options = {:method => :get, :raise_exception => false}.merge(self._options)
|
36
|
+
url = self._render_value
|
37
37
|
remote = url.match(/^[a-zA-Z]+:\/\//)
|
38
38
|
case options[:method]
|
39
39
|
when :get
|
@@ -43,7 +43,7 @@ module Mack
|
|
43
43
|
end
|
44
44
|
else
|
45
45
|
do_render_local_url(url, options) do |url, options|
|
46
|
-
Rack::MockRequest.new(self.
|
46
|
+
Rack::MockRequest.new(self._app_for_rendering).get(url, options)
|
47
47
|
end
|
48
48
|
end
|
49
49
|
when :post
|
@@ -53,7 +53,7 @@ module Mack
|
|
53
53
|
end
|
54
54
|
else
|
55
55
|
do_render_local_url(url, options) do |url, options|
|
56
|
-
Rack::MockRequest.new(self.
|
56
|
+
Rack::MockRequest.new(self._app_for_rendering).post(url, options)
|
57
57
|
end
|
58
58
|
end
|
59
59
|
else
|
@@ -23,9 +23,9 @@ module Mack
|
|
23
23
|
|
24
24
|
# See Mack::Rendering::Type::FileBase render_file for more information.
|
25
25
|
def render
|
26
|
-
self.
|
27
|
-
self.controller.response["Content-Type"] = Mack::Utils::MimeTypes[self.
|
28
|
-
x_file = File.join(self.controller_view_path, "#{self.
|
26
|
+
self._options[:format] = "xml"
|
27
|
+
self.controller.response["Content-Type"] = Mack::Utils::MimeTypes[self._options[:format]]
|
28
|
+
x_file = File.join(self.controller_view_path, "#{self._render_value}.#{self._options[:format]}")
|
29
29
|
render_file(x_file, :xml)
|
30
30
|
end
|
31
31
|
|
@@ -5,25 +5,25 @@ module Mack
|
|
5
5
|
class ViewTemplate
|
6
6
|
|
7
7
|
# Allows access to any options passed into the template.
|
8
|
-
attr_accessor :
|
9
|
-
attr_accessor :
|
10
|
-
attr_accessor :
|
8
|
+
attr_accessor :_options
|
9
|
+
attr_accessor :_render_type
|
10
|
+
attr_accessor :_render_value
|
11
11
|
|
12
12
|
def initialize(render_type, render_value, options = {})
|
13
|
-
self.
|
14
|
-
self.
|
15
|
-
self.
|
13
|
+
self._render_type = render_type
|
14
|
+
self._render_value = render_value
|
15
|
+
self._options = options
|
16
16
|
@_yield_to_cache = {}
|
17
17
|
Thread.current[:view_template] = self
|
18
18
|
# Define methods for :locals
|
19
|
-
(self.
|
19
|
+
(self._options[:locals] || {}).each do |k,v|
|
20
20
|
define_instance_method(k) {v}
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
# Allows access to the current Mack::Controller object.
|
25
25
|
def controller
|
26
|
-
self.
|
26
|
+
self._options[:controller]
|
27
27
|
end
|
28
28
|
|
29
29
|
# Returns the Mack::Request associated with the current Mack::Controller object.
|
@@ -57,8 +57,8 @@ module Mack
|
|
57
57
|
# <%= render(:partial, :latest_news) %>
|
58
58
|
# <%= render(:url, "http://www.mackframework.com") %>
|
59
59
|
def render(render_type, render_value, options = {})
|
60
|
-
options = self.
|
61
|
-
Mack::Rendering::ViewTemplate.new(render_type, render_value, options).
|
60
|
+
options = self._options.merge({:layout => false}).merge(options)
|
61
|
+
Mack::Rendering::ViewTemplate.new(render_type, render_value, options)._compile_and_render
|
62
62
|
end
|
63
63
|
|
64
64
|
# Returns a string stored using content_for.
|
@@ -93,18 +93,18 @@ module Mack
|
|
93
93
|
# Transfers all the instance variables from the controller to the current instance of
|
94
94
|
# the view template. This call is cached, so it only happens once, regardless of the number
|
95
95
|
# of times it is called.
|
96
|
-
def
|
97
|
-
ivar_cache("
|
98
|
-
self.
|
99
|
-
|
96
|
+
def _compile
|
97
|
+
ivar_cache("_compiled_template") do
|
98
|
+
self._options.symbolize_keys!
|
99
|
+
_transfer_vars(self.controller)
|
100
100
|
end
|
101
101
|
end
|
102
102
|
|
103
|
-
# Fully
|
104
|
-
def
|
105
|
-
self.
|
106
|
-
content_for(:view,
|
107
|
-
|
103
|
+
# Fully _compiles and renders the view and, if applicable, it's layout.
|
104
|
+
def _compile_and_render
|
105
|
+
self._compile
|
106
|
+
content_for(:view, _render_view)
|
107
|
+
_render_layout
|
108
108
|
end
|
109
109
|
|
110
110
|
# Passes concatenation messages through to the Mack::Rendering::Type object.
|
@@ -117,7 +117,7 @@ module Mack
|
|
117
117
|
# Primarily used by Mack::Rendering::Type::Url when dealing with 'local' urls.
|
118
118
|
# This returns an instance of the current application to run additional requests
|
119
119
|
# through.
|
120
|
-
def
|
120
|
+
def _app_for_rendering
|
121
121
|
ivar_cache do
|
122
122
|
Mack::Utils::Server.build_app
|
123
123
|
end
|
@@ -125,25 +125,25 @@ module Mack
|
|
125
125
|
|
126
126
|
# Returns the binding of the current view template to be used with
|
127
127
|
# the engines to render.
|
128
|
-
def
|
128
|
+
def _binder
|
129
129
|
binding
|
130
130
|
end
|
131
131
|
|
132
132
|
private
|
133
133
|
|
134
|
-
def
|
135
|
-
if @_render_type.allow_layout? && self.
|
134
|
+
def _render_layout
|
135
|
+
if @_render_type.allow_layout? && self._options[:layout]
|
136
136
|
return Mack::Rendering::Type::Layout.new(self).render
|
137
137
|
end
|
138
138
|
return yield_to(:view)
|
139
139
|
end
|
140
140
|
|
141
|
-
def
|
142
|
-
@_render_type =
|
141
|
+
def _render_view
|
142
|
+
@_render_type = _find_render_type(self._render_type).new(self)
|
143
143
|
@_render_type.render
|
144
144
|
end
|
145
145
|
|
146
|
-
def
|
146
|
+
def _find_file(*path)
|
147
147
|
f = File.join(path)
|
148
148
|
if File.exists?(f)
|
149
149
|
yield f
|
@@ -151,13 +151,13 @@ module Mack
|
|
151
151
|
end
|
152
152
|
|
153
153
|
# Transfer instance variables from the controller to the view.
|
154
|
-
def
|
154
|
+
def _transfer_vars(x)
|
155
155
|
x.instance_variables.each do |v|
|
156
156
|
self.instance_variable_set(v, x.instance_variable_get(v))
|
157
157
|
end
|
158
158
|
end
|
159
159
|
|
160
|
-
def
|
160
|
+
def _find_render_type(e)
|
161
161
|
eval("Mack::Rendering::Type::#{e.to_s.camelcase}")
|
162
162
|
end
|
163
163
|
|
data/lib/mack/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.0
|
4
|
+
version: 0.8.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- markbates
|
@@ -30,7 +30,7 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.8.0
|
33
|
+
version: 0.8.0.2
|
34
34
|
version:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: configatron
|