cells 3.3.1 → 3.3.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/README.textile +1 -0
- data/lib/cells/cell/base.rb +15 -5
- data/lib/cells/cell/view.rb +3 -4
- data/lib/cells/version.rb +1 -1
- data/test/app/cells/bassist_cell.rb +3 -0
- data/test/erector_test.rb +63 -0
- data/test/render_test.rb +16 -0
- data/test/support/internal_assertions_helper.rb +6 -0
- data/test/test_helper.rb +2 -0
- metadata +16 -5
data/README.textile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Helpers
|
data/lib/cells/cell/base.rb
CHANGED
@@ -323,19 +323,30 @@ module Cells
|
|
323
323
|
# between both terms. A cell view is both, a view and a kind of partial as it represents only a small
|
324
324
|
# part of the page.
|
325
325
|
# Just use <tt>:view</tt> and enjoy.
|
326
|
-
def render(opts={})
|
327
|
-
render_view_for(opts, @state_name)
|
326
|
+
def render(opts={}, &block)
|
327
|
+
render_view_for(opts, @state_name, &block)
|
328
328
|
end
|
329
329
|
|
330
330
|
# Render the view belonging to the given state. Will raise ActionView::MissingTemplate
|
331
331
|
# if it can not find one of the requested view template. Note that this behaviour was
|
332
332
|
# introduced in cells 2.3 and replaces the former warning message.
|
333
|
-
def render_view_for(opts, state)
|
333
|
+
def render_view_for(opts, state, &block)
|
334
334
|
return '' if opts[:nothing]
|
335
335
|
|
336
336
|
action_view = setup_action_view
|
337
337
|
|
338
338
|
### TODO: dispatch dynamically:
|
339
|
+
if opts[:erector]
|
340
|
+
require 'erector'
|
341
|
+
#puts self.class.master_helper_module.instance_methods
|
342
|
+
#extend self.class.master_helper_module
|
343
|
+
#return Erector.inline(assigns_for_view, &block).to_s(:helpers => action_view, :parent => action_view)
|
344
|
+
#include_helpers_in_class(action_view.class)
|
345
|
+
action_view.output_buffer=""
|
346
|
+
return Erector.inline(assigns_for_view, &block).to_s(:parent => action_view)
|
347
|
+
end
|
348
|
+
|
349
|
+
|
339
350
|
if opts[:text]
|
340
351
|
elsif opts[:inline]
|
341
352
|
elsif opts[:file]
|
@@ -453,8 +464,7 @@ module Cells
|
|
453
464
|
|
454
465
|
### TODO: allow log levels.
|
455
466
|
def log(message)
|
456
|
-
|
457
|
-
@controller.logger.debug(message)
|
467
|
+
@controller.logger and @controller.logger.debug(message)
|
458
468
|
end
|
459
469
|
end
|
460
470
|
end
|
data/lib/cells/cell/view.rb
CHANGED
@@ -18,11 +18,11 @@ module Cells
|
|
18
18
|
### so that we can overwrite the helper and cleanly reuse the internal method? using the same
|
19
19
|
### method both internally and externally sucks ass.
|
20
20
|
def render(options = {}, local_assigns = {}, &block)
|
21
|
-
### TODO: delegate dynamically:
|
22
21
|
### TODO: we have to find out if this is a call to the cells #render method, or to the rails
|
23
22
|
### method (e.g. when rendering a layout). what a shit.
|
24
|
-
if
|
25
|
-
|
23
|
+
if (options.keys & [:view, :state]).present? ### TODO: is there something like has_keys?
|
24
|
+
# that's better: simply delegate render back to the cell/controller.
|
25
|
+
return cell.render(options)
|
26
26
|
end
|
27
27
|
|
28
28
|
# rails compatibility we should get rid of:
|
@@ -30,7 +30,6 @@ module Cells
|
|
30
30
|
# adds the cell name to the partial name.
|
31
31
|
options[:partial] = expand_view_path(partial_path)
|
32
32
|
end
|
33
|
-
#throw Exception.new
|
34
33
|
|
35
34
|
super(options, local_assigns, &block)
|
36
35
|
end
|
data/lib/cells/version.rb
CHANGED
@@ -0,0 +1,63 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.join(File.dirname(__FILE__), 'test_helper')
|
3
|
+
|
4
|
+
class ErectorTest < ActionController::TestCase
|
5
|
+
context "#render with :erector" do
|
6
|
+
setup do
|
7
|
+
@cell = cell_mock
|
8
|
+
end
|
9
|
+
|
10
|
+
should "render the erector widget when called with block" do
|
11
|
+
@cell.instance_eval do
|
12
|
+
def jam
|
13
|
+
@key = "A"
|
14
|
+
render :erector => true do
|
15
|
+
h1 do
|
16
|
+
text "Rock it in "
|
17
|
+
b @key
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
assert_equal "<h1>Rock it in <b>A</b></h1>", @cell.render_state(:jam)
|
24
|
+
end
|
25
|
+
|
26
|
+
should "have access to cell helpers" do
|
27
|
+
@cell.instance_eval do
|
28
|
+
#self.class.helper ActionView::Helpers::UrlHelper
|
29
|
+
|
30
|
+
def jam
|
31
|
+
@key = "A"
|
32
|
+
render :erector => true do
|
33
|
+
#url_for("Rock it", "/rock/it")
|
34
|
+
h1 do link_to("Rock it in #{@key}", :url => "/rock/it") end
|
35
|
+
#text raw link_to("Rock it")
|
36
|
+
#h "test"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
#erector_in_cell = Erector::Widget.new
|
42
|
+
class Erector::InlineWidget
|
43
|
+
def link_to(*args)
|
44
|
+
text! "what-ever!"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
assert_equal "<h1><a href=\"Rock it in A\" url=\"/rock/it\">Rock it in A</a></h1>", @cell.render_state(:jam)
|
49
|
+
end
|
50
|
+
|
51
|
+
should "cry for beer!" do
|
52
|
+
require 'erector'
|
53
|
+
obj = Object.new
|
54
|
+
obj.instance_eval do
|
55
|
+
def beer; "beer!"; end
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
assert_equal "<p>Cry for beer!</p>", Erector.inline() { p "Cry for #{text beer} #{b 'yo'}" }.to_s(:parent => obj)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/test/render_test.rb
CHANGED
@@ -283,4 +283,20 @@ class RenderTest < ActiveSupport::TestCase
|
|
283
283
|
end
|
284
284
|
assert_equal "Metal:A/another_state/a,b", render_cell(:a, :existing_view)
|
285
285
|
end
|
286
|
+
|
287
|
+
context "render :state within a view" do
|
288
|
+
should "return the state content" do
|
289
|
+
assert_equal( "\nDoo\n\nDoo\n\nDoo\n\nDoo\n",
|
290
|
+
bassist_mock do
|
291
|
+
def jam
|
292
|
+
@chords = %w(d a c g)
|
293
|
+
render
|
294
|
+
end
|
295
|
+
def play
|
296
|
+
render
|
297
|
+
end
|
298
|
+
end.render_state(:jam)
|
299
|
+
)
|
300
|
+
end
|
301
|
+
end
|
286
302
|
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cells
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 3
|
7
|
+
- 3
|
8
|
+
- 2
|
9
|
+
version: 3.3.2
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Nick Sutterer
|
@@ -9,7 +14,7 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-
|
17
|
+
date: 2010-04-12 00:00:00 +02:00
|
13
18
|
default_executable:
|
14
19
|
dependencies: []
|
15
20
|
|
@@ -21,10 +26,12 @@ extensions: []
|
|
21
26
|
|
22
27
|
extra_rdoc_files:
|
23
28
|
- README.rdoc
|
29
|
+
- README.textile
|
24
30
|
files:
|
25
31
|
- CHANGES
|
26
32
|
- MIT-LICENSE
|
27
33
|
- README.rdoc
|
34
|
+
- README.textile
|
28
35
|
- Rakefile
|
29
36
|
- lib/cell.rb
|
30
37
|
- lib/cells.rb
|
@@ -62,22 +69,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
62
69
|
requirements:
|
63
70
|
- - ">="
|
64
71
|
- !ruby/object:Gem::Version
|
72
|
+
segments:
|
73
|
+
- 0
|
65
74
|
version: "0"
|
66
|
-
version:
|
67
75
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
76
|
requirements:
|
69
77
|
- - ">="
|
70
78
|
- !ruby/object:Gem::Version
|
79
|
+
segments:
|
80
|
+
- 0
|
71
81
|
version: "0"
|
72
|
-
version:
|
73
82
|
requirements: []
|
74
83
|
|
75
84
|
rubyforge_project:
|
76
|
-
rubygems_version: 1.3.
|
85
|
+
rubygems_version: 1.3.6
|
77
86
|
signing_key:
|
78
87
|
specification_version: 3
|
79
88
|
summary: Cells are lightweight controllers for Rails and can be rendered in controllers and views, providing an elegant and fast way for encapsulation and component-orientation.
|
80
89
|
test_files:
|
90
|
+
- test/erector_test.rb
|
81
91
|
- test/rails_test.rb
|
82
92
|
- test/capture_helper_test.rb
|
83
93
|
- test/assertions_helper_test.rb
|
@@ -90,6 +100,7 @@ test_files:
|
|
90
100
|
- test/helper_test.rb
|
91
101
|
- test/caching_test.rb
|
92
102
|
- test/app/controllers/cells_test_controller.rb
|
103
|
+
- test/app/cells/bassist_cell.rb
|
93
104
|
- test/app/cells/really_module/nested_cell.rb
|
94
105
|
- test/app/cells/cells_test_one_cell.rb
|
95
106
|
- test/app/cells/cells_test_two_cell.rb
|