markevans-block_helpers 0.2.7 → 0.2.8

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.markdown CHANGED
@@ -168,6 +168,16 @@ To use in Rails, add to your `environment.rb`:
168
168
 
169
169
  config.gem "markevans-block_helpers", :lib => "block_helpers", :source => "http://gems.github.com"
170
170
 
171
+ for Merb, in `init.rb`:
172
+
173
+ dependency "markevans-block_helpers", :require_as => "block_helpers"
174
+
175
+ Compatibility
176
+ =============
177
+ Currently it depends on activesupport, and requires that the helper already has the methods `concat` and `capture` available (which is the case in Rails and Merb).
178
+
179
+ It works with both the one and two argument versions of `concat`, so should work with all recent versions of Rails and Merb.
180
+
171
181
  Credits
172
182
  =======
173
183
  - <a href="http://github.com/markevans">Mark Evans</a> (author)
data/Rakefile CHANGED
@@ -10,7 +10,6 @@ begin
10
10
  gem.homepage = "http://github.com/markevans/block_helpers"
11
11
  gem.authors = ["Mark Evans"]
12
12
  gem.add_dependency('activesupport', '>= 2.0')
13
- gem.add_dependency('actionpack', '>= 2.0')
14
13
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
14
  end
16
15
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.7
1
+ 0.2.8
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{block_helpers}
5
- s.version = "0.2.7"
5
+ s.version = "0.2.8"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Mark Evans"]
9
- s.date = %q{2009-08-14}
9
+ s.date = %q{2009-08-19}
10
10
  s.email = %q{mark@new-bamboo.co.uk}
11
11
  s.extra_rdoc_files = [
12
12
  "LICENSE",
@@ -43,13 +43,10 @@ Gem::Specification.new do |s|
43
43
 
44
44
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
45
45
  s.add_runtime_dependency(%q<activesupport>, [">= 2.0"])
46
- s.add_runtime_dependency(%q<actionpack>, [">= 2.0"])
47
46
  else
48
47
  s.add_dependency(%q<activesupport>, [">= 2.0"])
49
- s.add_dependency(%q<actionpack>, [">= 2.0"])
50
48
  end
51
49
  else
52
50
  s.add_dependency(%q<activesupport>, [">= 2.0"])
53
- s.add_dependency(%q<actionpack>, [">= 2.0"])
54
51
  end
55
52
  end
data/lib/block_helpers.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require 'activesupport'
2
- require 'action_view'
3
2
 
4
3
  module BlockHelpers
5
4
 
@@ -20,7 +19,11 @@ module BlockHelpers
20
19
  renderer = #{klass.name}.new(*args)
21
20
  renderer.send(:helper=, self)
22
21
  if renderer.public_methods(false).include? 'display'
23
- concat renderer.display(capture(renderer, &block))
22
+ if method(:concat).arity == 1
23
+ concat renderer.display(capture(renderer, &block))
24
+ else
25
+ concat renderer.display(capture(renderer, &block)), binding
26
+ end
24
27
  else
25
28
  block.call(renderer)
26
29
  end
@@ -8,9 +8,12 @@ describe TestHelperModule do
8
8
  describe "simple block_helper" do
9
9
 
10
10
  before(:each) do
11
- class TestHelperModule::TestHelper < BlockHelpers::Base
12
- def hello
13
- 'Hi there'
11
+ module TestHelperModule
12
+ remove_const(:TestHelper) if defined?(TestHelper)
13
+ class TestHelper < BlockHelpers::Base
14
+ def hello
15
+ 'Hi there'
16
+ end
14
17
  end
15
18
  end
16
19
  end
@@ -34,12 +37,13 @@ describe TestHelperModule do
34
37
  describe "access to other methods" do
35
38
  before(:each) do
36
39
  module TestHelperModule
37
-
40
+
38
41
  def yoghurt
39
42
  'Yoghurt'
40
43
  end
41
44
 
42
- class TestHelper
45
+ remove_const(:TestHelper) if defined?(TestHelper)
46
+ class TestHelper < BlockHelpers::Base
43
47
  def yog
44
48
  yoghurt[0..2]
45
49
  end
@@ -92,7 +96,7 @@ describe TestHelperModule do
92
96
  <% end %>
93
97
  )).should match_html('<label for="hi">Hi</label>')
94
98
  end
95
- it "should work with methods like 'concat'" do
99
+ it "should work with methods like 'capture'" do
96
100
  eval_erb(%(
97
101
  <% test_helper do |r| %>
98
102
  <% r.check_capture do %>
@@ -103,16 +107,66 @@ describe TestHelperModule do
103
107
  end
104
108
  end
105
109
 
110
+ describe "accesibility" do
111
+ def run_erb
112
+ eval_erb(%(
113
+ <% compat_helper do |r| %>
114
+ HELLO
115
+ <% end %>
116
+ ))
117
+ end
118
+
119
+ it "should work when concat has one arg" do
120
+ module TestHelperModule
121
+ def concat(html); super(html); end
122
+ remove_const(:CompatHelper) if defined?(CompatHelper)
123
+ class CompatHelper < BlockHelpers::Base
124
+ def display(body)
125
+ "Before...#{body}...after"
126
+ end
127
+ end
128
+ end
129
+ run_erb.should match_html("Before... HELLO ...after")
130
+ end
131
+ it "should work when concat has two args" do
132
+ module TestHelperModule
133
+ def concat(html, binding); super(html); end
134
+ remove_const(:CompatHelper) if defined?(:CompatHelper)
135
+ class CompatHelper < BlockHelpers::Base
136
+ def display(body)
137
+ "Before...#{body}...after"
138
+ end
139
+ end
140
+ end
141
+ run_erb.should match_html("Before... HELLO ...after")
142
+ end
143
+ it "should work when concat has one optional arg" do
144
+ module TestHelperModule
145
+ def concat(html, binding=nil); super(html); end
146
+ remove_const(:CompatHelper) if defined?(:CompatHelper)
147
+ class CompatHelper < BlockHelpers::Base
148
+ def display(body)
149
+ "Before...#{body}...after"
150
+ end
151
+ end
152
+ end
153
+ run_erb.should match_html("Before... HELLO ...after")
154
+ end
155
+ end
156
+
106
157
  describe "surrounding the block" do
107
158
 
108
159
  before(:each) do
109
- class TestHelperModule::TestHelperSurround < BlockHelpers::Base
110
- def display(body)
111
- %(
112
- <p>Before</p>
113
- #{body}
114
- <p>After</p>
115
- )
160
+ module TestHelperModule
161
+ remove_const(:TestHelperSurround) if defined?(TestHelperSurround)
162
+ class TestHelperSurround < BlockHelpers::Base
163
+ def display(body)
164
+ %(
165
+ <p>Before</p>
166
+ #{body}
167
+ <p>After</p>
168
+ )
169
+ end
116
170
  end
117
171
  end
118
172
  end
@@ -128,12 +182,15 @@ describe TestHelperModule do
128
182
 
129
183
  describe "block helpers with arguments" do
130
184
  before(:each) do
131
- class TestHelperModule::TestHelperWithArgs < BlockHelpers::Base
132
- def initialize(id, klass)
133
- @id, @klass = id, klass
134
- end
135
- def hello
136
- %(<p class="#{@klass}" id="#{@id}">Hello</p>)
185
+ module TestHelperModule
186
+ remove_const(:TestHelperWithArgs) if defined?(TestHelperWithArgs)
187
+ class TestHelperWithArgs < BlockHelpers::Base
188
+ def initialize(id, klass)
189
+ @id, @klass = id, klass
190
+ end
191
+ def hello
192
+ %(<p class="#{@klass}" id="#{@id}">Hello</p>)
193
+ end
137
194
  end
138
195
  end
139
196
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: markevans-block_helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Evans
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-08-14 00:00:00 -07:00
12
+ date: 2009-08-19 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -22,16 +22,6 @@ dependencies:
22
22
  - !ruby/object:Gem::Version
23
23
  version: "2.0"
24
24
  version:
25
- - !ruby/object:Gem::Dependency
26
- name: actionpack
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: "2.0"
34
- version:
35
25
  description:
36
26
  email: mark@new-bamboo.co.uk
37
27
  executables: []