class Array
Philter
with passion
Public Instance Methods
philter(search = nil, options = {}) { |item| ... }
click to toggle source
Have yourself indulging in the pleasure of philtering
# File lib/philter/array.rb, line 10 def philter(search = nil, options = {}, &block) options = { get: nil, debug: false }.merge(options) unless search puts philter_help if options[:debug] raise 'Specify search parameter!' end puts if options[:debug] puts "#{'-' * 15} Start debugging philter #{Philter.version} #{'-' * 15}" if options[:debug] items = self apply_block = true results = case search.class.name when 'Hash' print ' Search by Hash:' if options[:debug] phil_search_by_attributes(items, search, options) when 'String' print ' Search by String:' if options[:debug] operator = phil_get_operator(search) if operator phil_search_with_operator(items, search, options) else puts " #{search} with grep" if options[:debug] items.grep(search) end when 'Array' print ' Search by Array:' if options[:debug] phil_search_by_array(items, search, options) else puts " Search with grep: #{search}" if options[:debug] apply_block = false items.grep(search, &block) end puts "#{'-' * 15} End debugging philter #{Philter.version} #{'-' * 15}" if options[:debug] puts " #{results.size} item(s) found" if options[:debug] if block_given? && apply_block results.map { |item| yield(item) } else results end end