Class: Rory::ParameterFilter::CompiledFilter
- Inherits:
-
Object
- Object
- Rory::ParameterFilter::CompiledFilter
- Defined in:
- lib/rory/parameter_filter.rb
Instance Attribute Summary collapse
-
#blocks ⇒ Object
readonly
Returns the value of attribute blocks.
-
#regexps ⇒ Object
readonly
Returns the value of attribute regexps.
Class Method Summary collapse
Instance Method Summary collapse
- #call(original_params) ⇒ Object
-
#initialize(regexps, blocks) ⇒ CompiledFilter
constructor
A new instance of CompiledFilter.
Constructor Details
#initialize(regexps, blocks) ⇒ CompiledFilter
Returns a new instance of CompiledFilter.
40 41 42 43 |
# File 'lib/rory/parameter_filter.rb', line 40 def initialize(regexps, blocks) @regexps = regexps @blocks = blocks end |
Instance Attribute Details
#blocks ⇒ Object (readonly)
Returns the value of attribute blocks.
38 39 40 |
# File 'lib/rory/parameter_filter.rb', line 38 def blocks @blocks end |
#regexps ⇒ Object (readonly)
Returns the value of attribute regexps.
38 39 40 |
# File 'lib/rory/parameter_filter.rb', line 38 def regexps @regexps end |
Class Method Details
.compile(filters) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/rory/parameter_filter.rb', line 20 def self.compile(filters) return lambda { |params| params.dup } if filters.empty? strings, regexps, blocks = [], [], [] filters.each do |item| case item when Regexp regexps << item else strings << item.to_s end end regexps << Regexp.new(strings.join('|'), true) unless strings.empty? new regexps, blocks end |
Instance Method Details
#call(original_params) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/rory/parameter_filter.rb', line 45 def call(original_params) filtered_params = {} original_params.each do |key, value| if regexps.any? { |r| key =~ r } value = FILTERED elsif value.is_a?(Hash) value = call(value) elsif value.is_a?(Array) value = value.map { |v| v.is_a?(Hash) ? call(v) : v } end filtered_params[key] = value end filtered_params end |