aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_view/renderer/partial_renderer.rb
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2012-08-02 21:49:31 +0200
committerJosé Valim <jose.valim@gmail.com>2012-08-02 21:49:31 +0200
commit7a7ec74c1c32667e93f4bcd11d227d6134b0fa59 (patch)
tree352639fd44f55f0794af3ecd45779ff799cdd97f /actionpack/lib/action_view/renderer/partial_renderer.rb
parentac1a5d4234f7dc8463a9f3110086d6033eda34c7 (diff)
downloadrails-7a7ec74c1c32667e93f4bcd11d227d6134b0fa59.tar.gz
rails-7a7ec74c1c32667e93f4bcd11d227d6134b0fa59.tar.bz2
rails-7a7ec74c1c32667e93f4bcd11d227d6134b0fa59.zip
Check validity of options[:as] just once
Diffstat (limited to 'actionpack/lib/action_view/renderer/partial_renderer.rb')
-rw-r--r--actionpack/lib/action_view/renderer/partial_renderer.rb30
1 files changed, 18 insertions, 12 deletions
diff --git a/actionpack/lib/action_view/renderer/partial_renderer.rb b/actionpack/lib/action_view/renderer/partial_renderer.rb
index 128cade1b2..09029c47b0 100644
--- a/actionpack/lib/action_view/renderer/partial_renderer.rb
+++ b/actionpack/lib/action_view/renderer/partial_renderer.rb
@@ -337,11 +337,16 @@ module ActionView
end
end
+ if as = options[:as]
+ raise_invalid_identifier(as) unless as.to_s =~ /\A[a-z_]\w*\z/
+ as = as.to_sym
+ end
+
if @path
- @variable, @variable_counter = retrieve_variable(@path)
+ @variable, @variable_counter = retrieve_variable(@path, as)
@template_keys = retrieve_template_keys
else
- paths.map! { |path| retrieve_variable(path).unshift(path) }
+ paths.map! { |path| retrieve_variable(path, as).unshift(path) }
end
self
@@ -450,21 +455,22 @@ module ActionView
keys
end
- IDENTIFIER_ERROR_MESSAGE = "The partial name (%s) is not a valid Ruby identifier; " +
- "make sure your partial name starts with a lowercase letter or underscore, " +
- "and is followed by any combination of letters, numbers and underscores."
-
- def retrieve_variable(path)
- variable = if as = @options[:as]
- raise ArgumentError.new(IDENTIFIER_ERROR_MESSAGE % (path)) unless as.to_s =~ /\A[a-z_]\w*\z/
- as.to_sym
- else
+ def retrieve_variable(path, as)
+ variable = as || begin
base = path[-1] == "/" ? "" : File.basename(path)
- raise ArgumentError.new(IDENTIFIER_ERROR_MESSAGE % (path)) unless base =~ /\A_?([a-z]\w*)(\.\w+)*\z/
+ raise_invalid_identifier(path) unless base =~ /\A_?([a-z]\w*)(\.\w+)*\z/
$1.to_sym
end
variable_counter = :"#{variable}_counter" if @collection
[variable, variable_counter]
end
+
+ IDENTIFIER_ERROR_MESSAGE = "The partial name (%s) is not a valid Ruby identifier; " +
+ "make sure your partial name starts with a lowercase letter or underscore, " +
+ "and is followed by any combination of letters, numbers and underscores."
+
+ def raise_invalid_identifier(path)
+ raise ArgumentError.new(IDENTIFIER_ERROR_MESSAGE % (path))
+ end
end
end