method
compile
rails latest stable - Class:
ActiveSupport::ParameterFilter::CompiledFilter
compile(filters, mask:)public
No documentation available.
# File activesupport/lib/active_support/parameter_filter.rb, line 63
def self.compile(filters, mask))
return lambda { |params| params.dup } if filters.empty?
strings, regexps, blocks, deep_regexps, deep_strings = [], [], [], nil, nil
filters.each do |item|
case item
when Proc
blocks << item
when Regexp
if item.to_s.include?("\\.")
(deep_regexps ||= []) << item
else
regexps << item
end
else
s = Regexp.escape(item.to_s)
if s.include?("\\.")
(deep_strings ||= []) << s
else
strings << s
end
end
end
regexps << Regexp.new(strings.join("|"), true) unless strings.empty?
(deep_regexps ||= []) << Regexp.new(deep_strings.join("|"), true) if deep_strings&.any?
new regexps, deep_regexps, blocks, mask: mask
end