Sha256: 85964c024a36f78b3998be3a976f60f38089228b9bfd2f7d83fc4b892c7cf278

Contents?: true

Size: 737 Bytes

Versions: 6

Compression:

Stored size: 737 Bytes

Contents

module Capybara
  class Selector
    class CSS
      def self.escape(str)
        value = str.dup
        out = "".dup
        out << value.slice!(0...1) if value =~ /^[-_]/
        out << (value[0] =~ NMSTART ? value.slice!(0...1) : escape_char(value.slice!(0...1)))
        out << value.gsub(/[^a-zA-Z0-9_-]/) { |c| escape_char c }
        out
      end

      def self.escape_char(c)
        c =~ %r{[ -/:-~]} ? "\\#{c}" : format("\\%06x", c.ord)
      end

      S = '\u{80}-\u{D7FF}\u{E000}-\u{FFFD}\u{10000}-\u{10FFFF}'.freeze
      H = /[0-9a-fA-F]/
      UNICODE  = /\\#{H}{1,6}[ \t\r\n\f]?/
      NONASCII = /[#{S}]/
      ESCAPE   = /#{UNICODE}|\\[ -~#{S}]/
      NMSTART  = /[_a-zA-Z]|#{NONASCII}|#{ESCAPE}/
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
capybara-3.0.3 lib/capybara/selector/css.rb
capybara-3.0.2 lib/capybara/selector/css.rb
capybara-3.0.1 lib/capybara/selector/css.rb
capybara-3.0.0 lib/capybara/selector/css.rb
capybara-3.0.0.rc2 lib/capybara/selector/css.rb
capybara-3.0.0.rc1 lib/capybara/selector/css.rb