Sha256: ec5354554977d2b1c278f6342f4d9550deeab7ecfe97149aa53fc109da0bfa77

Contents?: true

Size: 1.22 KB

Versions: 140

Compression:

Stored size: 1.22 KB

Contents

# frozen_string_literal: true

module Nokogiri
  module Decorators
    ###
    # The Slop decorator implements method missing such that a methods may be
    # used instead of XPath or CSS.  See Nokogiri.Slop
    module Slop
      # The default XPath search context for Slop
      XPATH_PREFIX = "./"

      ###
      # look for node with +name+.  See Nokogiri.Slop
      def method_missing(name, *args, &block)
        if args.empty?
          list = xpath("#{XPATH_PREFIX}#{name.to_s.sub(/^_/, "")}")
        elsif args.first.is_a?(Hash)
          hash = args.first
          if hash[:css]
            list = css("#{name}#{hash[:css]}")
          elsif hash[:xpath]
            conds = Array(hash[:xpath]).join(" and ")
            list = xpath("#{XPATH_PREFIX}#{name}[#{conds}]")
          end
        else
          CSS::Parser.without_cache do
            list = xpath(
              *CSS.xpath_for("#{name}#{args.first}", prefix: XPATH_PREFIX)
            )
          end
        end

        super if list.empty?
        list.length == 1 ? list.first : list
      end

      def respond_to_missing?(name, include_private = false)
        list = xpath("#{XPATH_PREFIX}#{name.to_s.sub(/^_/, "")}")

        !list.empty?
      end
    end
  end
end

Version data entries

140 entries across 138 versions & 3 rubygems

Version Path
scrapbook-0.3.2 vendor/ruby/2.7.0/gems/nokogiri-1.13.8-arm64-darwin/lib/nokogiri/decorators/slop.rb
scrapbook-0.3.2 vendor/ruby/2.7.0/gems/nokogiri-1.13.3-arm64-darwin/lib/nokogiri/decorators/slop.rb
scrapbook-0.3.1 vendor/ruby/2.7.0/gems/nokogiri-1.13.8-arm64-darwin/lib/nokogiri/decorators/slop.rb
scrapbook-0.3.1 vendor/ruby/2.7.0/gems/nokogiri-1.13.3-arm64-darwin/lib/nokogiri/decorators/slop.rb
nokogiri-1.14.0-java lib/nokogiri/decorators/slop.rb
nokogiri-1.14.0-arm64-darwin lib/nokogiri/decorators/slop.rb
nokogiri-1.14.0-x86_64-darwin lib/nokogiri/decorators/slop.rb
nokogiri-1.14.0-x86-mingw32 lib/nokogiri/decorators/slop.rb
nokogiri-1.14.0 lib/nokogiri/decorators/slop.rb
nokogiri-1.14.0-aarch64-linux lib/nokogiri/decorators/slop.rb
nokogiri-1.14.0-x86-linux lib/nokogiri/decorators/slop.rb
nokogiri-1.14.0-x86_64-linux lib/nokogiri/decorators/slop.rb
nokogiri-1.14.0-arm-linux lib/nokogiri/decorators/slop.rb
nokogiri-1.14.0-x64-mingw32 lib/nokogiri/decorators/slop.rb
nokogiri-1.14.0-x64-mingw-ucrt lib/nokogiri/decorators/slop.rb
nokogiri-1.14.0.rc1-x86_64-linux lib/nokogiri/decorators/slop.rb
nokogiri-1.14.0.rc1 lib/nokogiri/decorators/slop.rb
nokogiri-1.14.0.rc1-java lib/nokogiri/decorators/slop.rb
nokogiri-1.14.0.rc1-x86_64-darwin lib/nokogiri/decorators/slop.rb
nokogiri-1.14.0.rc1-x86-mingw32 lib/nokogiri/decorators/slop.rb