class Yoti::MultiValue
Constants
- Value
Public Class Methods
new(items)
click to toggle source
# File lib/yoti/data_type/multi_value.rb, line 3 def initialize(items) raise(TypeError, "Arrays must be passed to #{self.class.name}") unless items.is_a?(Array) @original_items = items @items = items.dup @filters = [] end
Public Instance Methods
allow_type(type)
click to toggle source
# File lib/yoti/data_type/multi_value.rb, line 11 def allow_type(type) filter { |value| value.is_a?(type) } self end
filter(&callback)
click to toggle source
# File lib/yoti/data_type/multi_value.rb, line 16 def filter(&callback) @filters.push(callback) apply_filters self end
items()
click to toggle source
# File lib/yoti/data_type/multi_value.rb, line 22 def items apply_filters @items.clone.freeze end
Private Instance Methods
apply_filters()
click to toggle source
# File lib/yoti/data_type/multi_value.rb, line 29 def apply_filters @items = @original_items.dup if @filters.count.positive? @items.keep_if do |item| match = @filters.select { |callback| callback.call(item) } match.count.positive? end end @items.each do |item| next unless item.is_a?(MultiValue) @filters.each do |callback| item.filter { |value| callback.call(value) } end end end