Sha256: 1e10fa6282f7a42bc853d9a2aba17df06ba0ed6109b6dcfb5253d15170a28e59
Contents?: true
Size: 1.79 KB
Versions: 1
Compression:
Stored size: 1.79 KB
Contents
require 'set' require 'forwardable' module Might # class FilterParameters include Comparable include Enumerable extend Forwardable FilterError = Class.new(KeyError) def_delegators :parameters, :detect, :each # @param [<Might::FilterParameter>] def initialize(parameters = nil) @parameters = Set.new(parameters) end # Find filter by name # @param name [String] # @return [Might::FilterParameter, nil] # def [](name) parameters.detect { |filter| filter.name == name } end # Find filter by name or raise error # @param name [String] # @yieldparam name [String] # block value will be returned if no `FilterParameter` found with specified name # @return [Might::FilterParameter] # @raise FilterError # def fetch(name) if (filter = self[name]) filter elsif block_given? yield(name) else fail FilterError, "filter not found: #{name.inspect}" end end # param value [Might::FilterParameter] def add(value) self.class.new(parameters.add(value)) end alias << add def map(&block) self.class.new(parameters.map(&block)) end # param other [Might::FilterParameters] def -(other) self.class.new(parameters - other.parameters) end # param other [Might::FilterParameters] def +(other) self.class.new(parameters.merge(other.parameters)) end # Delete filter by name # @param name [String] # @return [Might::FilterParameter, nil] def delete(name) filter_parameter = self[name] parameters.delete(filter_parameter) if filter_parameter filter_parameter end def <=>(other) parameters <=> other.parameters end protected attr_reader :parameters end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
might-0.7.0 | lib/might/filter_parameters.rb |