oga/lib/oga/blacklist.rb

41 lines
643 B
Ruby

module Oga
##
# @api private
#
class Blacklist
# @return [Set]
attr_reader :names
##
# @param [Array] names
#
def initialize(names)
@names = Set.new(names + names.map(&:upcase))
end
##
# @yieldparam [String]
#
def each
names.each do |value|
yield value
end
end
##
# @return [TrueClass|FalseClass]
#
def allow?(name)
return !names.include?(name)
end
##
# @param [Oga::Blacklist] other
# @return [Oga::Blacklist]
#
def +(other)
return self.class.new(names + other.names)
end
end # Blacklist
end # Oga