erector-rails4 0.0.3 → 0.0.4
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.
- 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
|