mack 0.8.0 → 0.8.0.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/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
|