class Capybara::Selector::CSSBuilder
def class_conditions(classes)
def class_conditions(classes) case classes when XPath::Expression raise ArgumentError, 'XPath expressions are not supported for the :class filter with CSS based selectors' when Regexp strs = Selector::RegexpDisassembler.new(classes).substrings strs.map { |str| "[class*='#{str}'#{' i' if classes.casefold?}]" }.join else cls = Array(classes).group_by { |cl| cl.start_with? '!' } (cls[false].to_a.map { |cl| ".#{Capybara::Selector::CSS.escape(cl)}" } + cls[true].to_a.map { |cl| ":not(.#{Capybara::Selector::CSS.escape(cl.slice(1..-1))})" }).join end end