Added Blacklist/Whitelist classes
These will be used in favour of the NodeNameSet class.
This commit is contained in:
1 parent
3e337faa1d
commit
ca16a2976e
5 files changed
+150
No files matched your search
@@ -8,6 +8,8 @@ require_relative 'oga/oga'
|
||||
require_relative 'oga/lru'
|
||||
require_relative 'oga/entity_decoder'
|
||||
require_relative 'oga/node_name_set'
|
||||
require_relative 'oga/blacklist'
|
||||
require_relative 'oga/whitelist'
|
||||
|
||||
# Load these first so that the native extensions don't have to define the
|
||||
# Oga::XML namespace.
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
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
|
||||
@@ -0,0 +1,20 @@
|
||||
module Oga
|
||||
##
|
||||
# @api private
|
||||
#
|
||||
class Whitelist < Blacklist
|
||||
##
|
||||
# @return [TrueClass|FalseClass]
|
||||
#
|
||||
def allow?(name)
|
||||
return names.include?(name)
|
||||
end
|
||||
|
||||
##
|
||||
# @return [Oga::Blacklist]
|
||||
#
|
||||
def to_blacklist
|
||||
return Blacklist.new(names)
|
||||
end
|
||||
end # Whitelist
|
||||
end # Oga
|
||||
Reference in new issue
Block a user