renee-render 0.3.6 → 0.3.7
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/lib/renee_render.rb +35 -0
- data/test/render_test.rb +33 -0
- metadata +35 -80
data/lib/renee_render.rb
CHANGED
|
@@ -111,7 +111,42 @@ module Renee
|
|
|
111
111
|
end
|
|
112
112
|
end
|
|
113
113
|
|
|
114
|
+
##
|
|
115
|
+
# Render a partials with collections support
|
|
116
|
+
#
|
|
117
|
+
# @return [String] The html generated from this partial.
|
|
118
|
+
#
|
|
119
|
+
# @example
|
|
120
|
+
# partial 'photo/item', :object => @photo
|
|
121
|
+
# partial 'photo/item', :collection => @photos
|
|
122
|
+
# partial 'photo/item', :locals => { :foo => :bar }
|
|
123
|
+
#
|
|
124
|
+
def partial(template, options={})
|
|
125
|
+
options = { :locals => {}, :layout => false }.merge(options)
|
|
126
|
+
path = template.to_s.split(File::SEPARATOR)
|
|
127
|
+
object_name = path[-1].to_sym
|
|
128
|
+
path[-1] = "_#{path[-1]}"
|
|
129
|
+
template_path = File.join(path).to_sym
|
|
130
|
+
raise 'Partial collection specified but is nil' if options.has_key?(:collection) && options[:collection].nil?
|
|
131
|
+
if collection = options.delete(:collection)
|
|
132
|
+
options.delete(:object)
|
|
133
|
+
counter = 0
|
|
134
|
+
collection.map { |member|
|
|
135
|
+
counter += 1
|
|
136
|
+
options[:locals].merge!(object_name => member, "#{object_name}_counter".to_sym => counter)
|
|
137
|
+
render(template_path, options.dup)
|
|
138
|
+
}.join("\n")
|
|
139
|
+
else
|
|
140
|
+
if member = options.delete(:object)
|
|
141
|
+
options[:locals].merge!(object_name => member)
|
|
142
|
+
end
|
|
143
|
+
render(template_path, options.dup)
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
114
147
|
private
|
|
148
|
+
|
|
149
|
+
|
|
115
150
|
def render_setup(engine, options, block)
|
|
116
151
|
options ||= {}
|
|
117
152
|
options[:outvar] ||= '@_out_buf'
|
data/test/render_test.rb
CHANGED
|
@@ -102,5 +102,38 @@ describe Renee::Render do
|
|
|
102
102
|
}
|
|
103
103
|
assert_raises(Renee::Render::TemplateNotFound) { get('/') }
|
|
104
104
|
end # missing template, with engine
|
|
105
|
+
|
|
106
|
+
it "should allow partials to be rendered with locals" do
|
|
107
|
+
create_view "_foo", %Q{start\n%p= bar\nend}, :haml
|
|
108
|
+
create_view :index, %Q{%p test\n= partial("foo", :locals => { :bar => "banana"})\n%p bar}, :haml
|
|
109
|
+
mock_app {
|
|
110
|
+
path("/").get { render! "index" }
|
|
111
|
+
}
|
|
112
|
+
get('/')
|
|
113
|
+
assert_equal 200, response.status
|
|
114
|
+
assert_equal "<p>test</p>\nstart\n<p>banana</p>\nend\n<p>bar</p>\n", response.body
|
|
115
|
+
end # partials, locals
|
|
116
|
+
|
|
117
|
+
it "should allow partials to be rendered with object" do
|
|
118
|
+
create_view "_foo", %Q{start\n%p= foo\nend}, :haml
|
|
119
|
+
create_view :index, %Q{%p test\n= partial("foo", :object => "banana")\n%p bar}, :haml
|
|
120
|
+
mock_app {
|
|
121
|
+
path("/").get { render! "index" }
|
|
122
|
+
}
|
|
123
|
+
get('/')
|
|
124
|
+
assert_equal 200, response.status
|
|
125
|
+
assert_equal "<p>test</p>\nstart\n<p>banana</p>\nend\n<p>bar</p>\n", response.body
|
|
126
|
+
end # partials, object
|
|
127
|
+
|
|
128
|
+
it "should allow partials to be rendered with collection" do
|
|
129
|
+
create_view "_foo", %Q{%p= foo}, :haml
|
|
130
|
+
create_view :index, %Q{%p test\n= partial("foo", :collection => ["banana", "strawberry"])\n%p bar}, :haml
|
|
131
|
+
mock_app {
|
|
132
|
+
path("/").get { render! "index" }
|
|
133
|
+
}
|
|
134
|
+
get('/')
|
|
135
|
+
assert_equal 200, response.status
|
|
136
|
+
assert_equal "<p>test</p>\n<p>banana</p>\n\n<p>strawberry</p>\n<p>bar</p>\n", response.body
|
|
137
|
+
end # partials, collection
|
|
105
138
|
end
|
|
106
139
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: renee-render
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash: 31
|
|
5
4
|
prerelease:
|
|
6
|
-
|
|
7
|
-
- 0
|
|
8
|
-
- 3
|
|
9
|
-
- 6
|
|
10
|
-
version: 0.3.6
|
|
5
|
+
version: 0.3.7
|
|
11
6
|
platform: ruby
|
|
12
7
|
authors:
|
|
13
8
|
- Josh Hull
|
|
@@ -17,148 +12,108 @@ autorequire:
|
|
|
17
12
|
bindir: bin
|
|
18
13
|
cert_chain: []
|
|
19
14
|
|
|
20
|
-
date: 2011-
|
|
15
|
+
date: 2011-12-06 00:00:00 -08:00
|
|
16
|
+
default_executable:
|
|
21
17
|
dependencies:
|
|
22
18
|
- !ruby/object:Gem::Dependency
|
|
23
|
-
|
|
19
|
+
name: rack
|
|
20
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
|
24
21
|
none: false
|
|
25
22
|
requirements:
|
|
26
23
|
- - ~>
|
|
27
24
|
- !ruby/object:Gem::Version
|
|
28
|
-
hash: 27
|
|
29
|
-
segments:
|
|
30
|
-
- 1
|
|
31
|
-
- 3
|
|
32
|
-
- 0
|
|
33
25
|
version: 1.3.0
|
|
34
|
-
requirement: *id001
|
|
35
26
|
type: :runtime
|
|
36
27
|
prerelease: false
|
|
37
|
-
|
|
28
|
+
version_requirements: *id001
|
|
38
29
|
- !ruby/object:Gem::Dependency
|
|
39
|
-
|
|
30
|
+
name: tilt
|
|
31
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
|
40
32
|
none: false
|
|
41
33
|
requirements:
|
|
42
34
|
- - ~>
|
|
43
35
|
- !ruby/object:Gem::Version
|
|
44
|
-
hash: 29
|
|
45
|
-
segments:
|
|
46
|
-
- 1
|
|
47
|
-
- 3
|
|
48
|
-
- 3
|
|
49
36
|
version: 1.3.3
|
|
50
|
-
requirement: *id002
|
|
51
37
|
type: :runtime
|
|
52
38
|
prerelease: false
|
|
53
|
-
|
|
39
|
+
version_requirements: *id002
|
|
54
40
|
- !ruby/object:Gem::Dependency
|
|
55
|
-
|
|
41
|
+
name: callsite
|
|
42
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
|
56
43
|
none: false
|
|
57
44
|
requirements:
|
|
58
45
|
- - ~>
|
|
59
46
|
- !ruby/object:Gem::Version
|
|
60
|
-
hash: 19
|
|
61
|
-
segments:
|
|
62
|
-
- 0
|
|
63
|
-
- 0
|
|
64
|
-
- 6
|
|
65
47
|
version: 0.0.6
|
|
66
|
-
requirement: *id003
|
|
67
48
|
type: :runtime
|
|
68
49
|
prerelease: false
|
|
69
|
-
|
|
50
|
+
version_requirements: *id003
|
|
70
51
|
- !ruby/object:Gem::Dependency
|
|
71
|
-
|
|
52
|
+
name: renee-core
|
|
53
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
|
72
54
|
none: false
|
|
73
55
|
requirements:
|
|
74
56
|
- - "="
|
|
75
57
|
- !ruby/object:Gem::Version
|
|
76
|
-
|
|
77
|
-
segments:
|
|
78
|
-
- 0
|
|
79
|
-
- 3
|
|
80
|
-
- 6
|
|
81
|
-
version: 0.3.6
|
|
82
|
-
requirement: *id004
|
|
58
|
+
version: 0.3.7
|
|
83
59
|
type: :runtime
|
|
84
60
|
prerelease: false
|
|
85
|
-
|
|
61
|
+
version_requirements: *id004
|
|
86
62
|
- !ruby/object:Gem::Dependency
|
|
87
|
-
|
|
63
|
+
name: minitest
|
|
64
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
|
88
65
|
none: false
|
|
89
66
|
requirements:
|
|
90
67
|
- - ~>
|
|
91
68
|
- !ruby/object:Gem::Version
|
|
92
|
-
hash: 21
|
|
93
|
-
segments:
|
|
94
|
-
- 2
|
|
95
|
-
- 6
|
|
96
|
-
- 1
|
|
97
69
|
version: 2.6.1
|
|
98
|
-
requirement: *id005
|
|
99
70
|
type: :development
|
|
100
71
|
prerelease: false
|
|
101
|
-
|
|
72
|
+
version_requirements: *id005
|
|
102
73
|
- !ruby/object:Gem::Dependency
|
|
103
|
-
|
|
74
|
+
name: rake
|
|
75
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
|
104
76
|
none: false
|
|
105
77
|
requirements:
|
|
106
78
|
- - ">="
|
|
107
79
|
- !ruby/object:Gem::Version
|
|
108
|
-
hash: 3
|
|
109
|
-
segments:
|
|
110
|
-
- 0
|
|
111
80
|
version: "0"
|
|
112
|
-
requirement: *id006
|
|
113
81
|
type: :development
|
|
114
82
|
prerelease: false
|
|
115
|
-
|
|
83
|
+
version_requirements: *id006
|
|
116
84
|
- !ruby/object:Gem::Dependency
|
|
117
|
-
|
|
85
|
+
name: bundler
|
|
86
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
|
118
87
|
none: false
|
|
119
88
|
requirements:
|
|
120
89
|
- - ">="
|
|
121
90
|
- !ruby/object:Gem::Version
|
|
122
|
-
hash: 3
|
|
123
|
-
segments:
|
|
124
|
-
- 0
|
|
125
91
|
version: "0"
|
|
126
|
-
requirement: *id007
|
|
127
92
|
type: :development
|
|
128
93
|
prerelease: false
|
|
129
|
-
|
|
94
|
+
version_requirements: *id007
|
|
130
95
|
- !ruby/object:Gem::Dependency
|
|
131
|
-
|
|
96
|
+
name: rack-test
|
|
97
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
|
132
98
|
none: false
|
|
133
99
|
requirements:
|
|
134
100
|
- - ">="
|
|
135
101
|
- !ruby/object:Gem::Version
|
|
136
|
-
hash: 11
|
|
137
|
-
segments:
|
|
138
|
-
- 0
|
|
139
|
-
- 5
|
|
140
|
-
- 0
|
|
141
102
|
version: 0.5.0
|
|
142
|
-
requirement: *id008
|
|
143
103
|
type: :development
|
|
144
104
|
prerelease: false
|
|
145
|
-
|
|
105
|
+
version_requirements: *id008
|
|
146
106
|
- !ruby/object:Gem::Dependency
|
|
147
|
-
|
|
107
|
+
name: haml
|
|
108
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
|
148
109
|
none: false
|
|
149
110
|
requirements:
|
|
150
111
|
- - ">="
|
|
151
112
|
- !ruby/object:Gem::Version
|
|
152
|
-
hash: 7
|
|
153
|
-
segments:
|
|
154
|
-
- 2
|
|
155
|
-
- 2
|
|
156
|
-
- 0
|
|
157
113
|
version: 2.2.0
|
|
158
|
-
requirement: *id009
|
|
159
114
|
type: :development
|
|
160
115
|
prerelease: false
|
|
161
|
-
|
|
116
|
+
version_requirements: *id009
|
|
162
117
|
description: The super-friendly web framework rendering component.
|
|
163
118
|
email:
|
|
164
119
|
- joshbuddy@gmail.com
|
|
@@ -179,6 +134,7 @@ files:
|
|
|
179
134
|
- renee-render.gemspec
|
|
180
135
|
- test/render_test.rb
|
|
181
136
|
- test/test_helper.rb
|
|
137
|
+
has_rdoc: true
|
|
182
138
|
homepage: http://reneerb.com
|
|
183
139
|
licenses: []
|
|
184
140
|
|
|
@@ -192,7 +148,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
192
148
|
requirements:
|
|
193
149
|
- - ">="
|
|
194
150
|
- !ruby/object:Gem::Version
|
|
195
|
-
hash:
|
|
151
|
+
hash: 3690837816522299501
|
|
196
152
|
segments:
|
|
197
153
|
- 0
|
|
198
154
|
version: "0"
|
|
@@ -201,18 +157,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
201
157
|
requirements:
|
|
202
158
|
- - ">="
|
|
203
159
|
- !ruby/object:Gem::Version
|
|
204
|
-
hash:
|
|
160
|
+
hash: 3690837816522299501
|
|
205
161
|
segments:
|
|
206
162
|
- 0
|
|
207
163
|
version: "0"
|
|
208
164
|
requirements: []
|
|
209
165
|
|
|
210
166
|
rubyforge_project: renee
|
|
211
|
-
rubygems_version: 1.
|
|
167
|
+
rubygems_version: 1.6.2
|
|
212
168
|
signing_key:
|
|
213
169
|
specification_version: 3
|
|
214
170
|
summary: The super-friendly web framework rendering component
|
|
215
171
|
test_files:
|
|
216
172
|
- test/render_test.rb
|
|
217
173
|
- test/test_helper.rb
|
|
218
|
-
has_rdoc:
|