1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
module Flipper
module Types
class Group < Type
def self.wrap(group_or_name)
return group_or_name if group_or_name.is_a?(self)
Flipper.group(group_or_name)
end
attr_reader :name
def initialize(name, &block)
@name = name.to_sym
@value = @name
if block_given?
@block = block
@single_argument = @block.arity == 1
else
@block = ->(_thing, _context) { false }
@single_argument = false
end
end
def match?(thing, context)
if @single_argument
@block.call(thing)
else
@block.call(thing, context)
end
end
end
end
end
|