class Regexp::Expression::CharacterSet
def <<(member)
def <<(member) if @members.last.is_a?(CharacterSubSet) and not @members.last.closed? @members.last << member else @members << member end end
def clone
def clone copy = super copy.members = @members.map {|m| m.clone } copy end
def close
def close if @members.last.is_a?(CharacterSubSet) and not @members.last.closed? @members.last.close else @closed = true end end
def closed?
def closed? @closed end
def each(&block)
def each(&block) @members.each {|m| yield m} end
def each_with_index(&block)
def each_with_index(&block) @members.each_with_index {|m, i| yield m, i} end
def include?(member, directly = false)
def include?(member, directly = false) @members.each do |m| if m.is_a?(CharacterSubSet) and not directly return true if m.include?(member) else return true if member == m.to_s end end; false end
def initialize(token)
def initialize(token) @members = [] @negative = false @closed = false super end
def length
def length @members.length end
def matches?(input)
def matches?(input) input =~ /#{to_s}/ ? true : false end
def negate
def negate if @members.last.is_a?(CharacterSubSet) @members.last.negate else @negative = true end end
def negative?
def negative? @negative end
def to_s(format = :full)
def to_s(format = :full) s = '' s << @text.dup s << '^' if negative? s << @members.join s << ']' case format when :base else s << @quantifier.to_s if quantified? end s end