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 34 35 36 37 38 39 40 41 42 43 44 45 46
|
module Flipper
module Gates
class Group < Gate
# Internal: The name of the gate. Used for instrumentation, etc.
def name
:group
end
# Internal: Name converted to value safe for adapter.
def key
:groups
end
def data_type
:set
end
def enabled?(value)
!value.empty?
end
# Internal: Checks if the gate is open for a thing.
#
# Returns true if gate open for thing, false if not.
def open?(context)
value = context.values[key]
if context.thing.nil?
false
else
value.any? do |name|
group = Flipper.group(name)
group.match?(context.thing, context)
end
end
end
def wrap(thing)
Types::Group.wrap(thing)
end
def protects?(thing)
thing.is_a?(Types::Group) || thing.is_a?(Symbol)
end
end
end
end
|