erector-rails4 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/erector/inline.rb +12 -1
- data/lib/erector/rails.rb +77 -7
- data/lib/erector/version.rb +1 -1
- data/spec/dummy/spec/rails_helpers_spec.rb +0 -20
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e211a8ac04b10af2252d4713e0ce8ec22424a8ba
|
4
|
+
data.tar.gz: c301fdd53d28c30c6d68da8d9c9ca8b5eef52f5e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a559f5f718628a692414c3a6c5f36144975db97828841ca0f9bb3ec6756e72ea739df674c91dc21c30f30cf7566785a8f7390a0d4ec698dc2e72cf5f1a1a270
|
7
|
+
data.tar.gz: d03c8b61cf5365588e4fc18fdb4afe72c70ffc853580690beb10a8c2366a3673d98d9f1b3b9d3f08bd008a78847e44ac157883e0c978117297ba6ad3528b9ecf
|
data/Gemfile.lock
CHANGED
data/lib/erector/inline.rb
CHANGED
@@ -2,7 +2,7 @@ module Erector
|
|
2
2
|
def self.inline(*args, &block)
|
3
3
|
InlineWidget.new(*args, &block)
|
4
4
|
end
|
5
|
-
|
5
|
+
|
6
6
|
module Inline
|
7
7
|
# Executes the widget's block (the one that was passed in the
|
8
8
|
# constructor). Since "self" is pointing to the new widget, the block does
|
@@ -17,6 +17,17 @@ module Erector
|
|
17
17
|
# note that instance_eval seems to pass in self as a parameter to the block
|
18
18
|
instance_eval(&block) if block
|
19
19
|
end
|
20
|
+
|
21
|
+
private
|
22
|
+
# This is part of the sub-widget/parent feature (see #widget method).
|
23
|
+
def method_missing(name, *args, &block)
|
24
|
+
if parent && parent.respond_to?(name)
|
25
|
+
block ||= lambda {} # captures self HERE
|
26
|
+
parent.send(name, *args, &block)
|
27
|
+
else
|
28
|
+
super
|
29
|
+
end
|
30
|
+
end
|
20
31
|
end
|
21
32
|
|
22
33
|
class InlineWidget < Widget
|
data/lib/erector/rails.rb
CHANGED
@@ -43,6 +43,16 @@ module Erector
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
+
# Wrappers for rails helpers that produce markup. Erector needs to
|
47
|
+
# manually emit their result.
|
48
|
+
def def_simple_rails_helper(method_name)
|
49
|
+
module_eval <<-METHOD_DEF, __FILE__, __LINE__+1
|
50
|
+
def #{method_name}(*args, &block)
|
51
|
+
text helpers.#{method_name}(*args, &block)
|
52
|
+
end
|
53
|
+
METHOD_DEF
|
54
|
+
end
|
55
|
+
|
46
56
|
def def_rails_form_helper(method_name, explicit_builder = nil)
|
47
57
|
module_eval <<-METHOD_DEF, __FILE__, __LINE__+1
|
48
58
|
def #{method_name}(*args, &block)
|
@@ -124,13 +134,7 @@ module Erector
|
|
124
134
|
# and output return values that are html_safe
|
125
135
|
def method_missing(name, *args, &block)
|
126
136
|
if helpers.respond_to?(name)
|
127
|
-
|
128
|
-
|
129
|
-
if return_value.try(:html_safe?)
|
130
|
-
text return_value
|
131
|
-
else
|
132
|
-
return_value
|
133
|
-
end
|
137
|
+
helpers.send(name, *args, &block)
|
134
138
|
else
|
135
139
|
super
|
136
140
|
end
|
@@ -142,6 +146,72 @@ module Erector
|
|
142
146
|
super || helpers.respond_to?(name)
|
143
147
|
end
|
144
148
|
|
149
|
+
[
|
150
|
+
# UrlHelper
|
151
|
+
:link_to,
|
152
|
+
:button_to,
|
153
|
+
:link_to_unless_current,
|
154
|
+
:link_to_unless,
|
155
|
+
:link_to_if,
|
156
|
+
:mail_to,
|
157
|
+
|
158
|
+
# FormTagHelper
|
159
|
+
:form_tag,
|
160
|
+
:select_tag,
|
161
|
+
:text_field_tag,
|
162
|
+
:label_tag,
|
163
|
+
:hidden_field_tag,
|
164
|
+
:file_field_tag,
|
165
|
+
:password_field_tag,
|
166
|
+
:text_area_tag,
|
167
|
+
:check_box_tag,
|
168
|
+
:radio_button_tag,
|
169
|
+
:submit_tag,
|
170
|
+
:image_submit_tag,
|
171
|
+
:field_set_tag,
|
172
|
+
|
173
|
+
# FormHelper
|
174
|
+
:form_for,
|
175
|
+
:text_field,
|
176
|
+
:password_field,
|
177
|
+
:hidden_field,
|
178
|
+
:file_field,
|
179
|
+
:text_area,
|
180
|
+
:check_box,
|
181
|
+
:radio_button,
|
182
|
+
|
183
|
+
# AssetTagHelper
|
184
|
+
:auto_discovery_link_tag,
|
185
|
+
:javascript_include_tag,
|
186
|
+
:stylesheet_link_tag,
|
187
|
+
:favicon_link_tag,
|
188
|
+
:image_tag,
|
189
|
+
|
190
|
+
# ScriptaculousHelper
|
191
|
+
:sortable_element,
|
192
|
+
:sortable_element_js,
|
193
|
+
:text_field_with_auto_complete,
|
194
|
+
:draggable_element,
|
195
|
+
:drop_receiving_element,
|
196
|
+
|
197
|
+
# PrototypeHelper
|
198
|
+
:link_to_remote,
|
199
|
+
:button_to_remote,
|
200
|
+
:periodically_call_remote,
|
201
|
+
:form_remote_tag,
|
202
|
+
:submit_to_remote,
|
203
|
+
:update_page_tag,
|
204
|
+
|
205
|
+
# JavaScriptHelper
|
206
|
+
:javascript_tag,
|
207
|
+
|
208
|
+
# CsrfHelper
|
209
|
+
:csrf_meta_tag,
|
210
|
+
:csrf_meta_tags
|
211
|
+
].each do |method_name|
|
212
|
+
def_simple_rails_helper(method_name)
|
213
|
+
end
|
214
|
+
|
145
215
|
[:form_for, :fields_for].each do |method_name|
|
146
216
|
def_rails_form_helper(method_name)
|
147
217
|
end
|
data/lib/erector/version.rb
CHANGED
@@ -40,26 +40,6 @@ describe Erector::Rails do
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
describe "a helper intended to output" do
|
44
|
-
it "renders when called" do
|
45
|
-
test_render do
|
46
|
-
user_role_safe
|
47
|
-
end.should == %{admin}
|
48
|
-
end
|
49
|
-
|
50
|
-
it "cannot be combined directly with a built-in method" do
|
51
|
-
test_render do
|
52
|
-
image_tag user_role_safe
|
53
|
-
end.should == %{admin<img src="" />}
|
54
|
-
end
|
55
|
-
|
56
|
-
it "can be combined with a built-in method by using capture" do
|
57
|
-
test_render do
|
58
|
-
image_tag capture {user_role_safe}
|
59
|
-
end.should == %{<img alt="Admin" src="/images/admin" />}
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
43
|
describe "#link_to" do
|
64
44
|
it "renders a link" do
|
65
45
|
test_render do
|