mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
using a Hash with default proc to memoize dispatch methods
This commit is contained in:
parent
f95f0918d7
commit
6b8a382a75
1 changed files with 4 additions and 9 deletions
|
@ -222,17 +222,12 @@ module Arel
|
|||
def visit_BigDecimal o; quote(o) end
|
||||
def visit_FalseClass o; quote(o) end
|
||||
|
||||
DISPATCH = {}
|
||||
def visit object
|
||||
send "visit_#{object.class.name.gsub('::', '_')}", object
|
||||
#send DISPATCH[object.class], object
|
||||
DISPATCH = Hash.new do |hash, klass|
|
||||
hash[klass] = "visit_#{klass.name.gsub('::', '_')}"
|
||||
end
|
||||
|
||||
private_instance_methods(false).each do |method|
|
||||
method = method.to_s
|
||||
next unless method =~ /^visit_(.*)$/
|
||||
const = $1.split('_').inject(Object) { |m,s| m.const_get s }
|
||||
DISPATCH[const] = method
|
||||
def visit object
|
||||
send DISPATCH[object.class], object
|
||||
end
|
||||
|
||||
def quote value, column = nil
|
||||
|
|
Loading…
Reference in a new issue