$63 GRAYBYTE WORDPRESS FILE MANAGER $40

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 104.21.43.35 | ADMIN IP 216.73.216.180
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : mail

/opt/cpanel/ea-ruby27/root/usr/share/ruby/ruby-2.7.8/rexml/

HOME
Current File : /opt/cpanel/ea-ruby27/root/usr/share/ruby/ruby-2.7.8/rexml//xpath.rb
# frozen_string_literal: false
require_relative 'functions'
require_relative 'xpath_parser'

module REXML
  # Wrapper class.  Use this class to access the XPath functions.
  class XPath
    include Functions
    # A base Hash object, supposing to be used when initializing a
    # default empty namespaces set, but is currently unused.
    # TODO: either set the namespaces=EMPTY_HASH, or deprecate this.
    EMPTY_HASH = {}

    # Finds and returns the first node that matches the supplied xpath.
    # element::
    #   The context element
    # path::
    #   The xpath to search for.  If not supplied or nil, returns the first
    #   node matching '*'.
    # namespaces::
    #   If supplied, a Hash which defines a namespace mapping.
    # variables::
    #   If supplied, a Hash which maps $variables in the query
    #   to values. This can be used to avoid XPath injection attacks
    #   or to automatically handle escaping string values.
    #
    #  XPath.first( node )
    #  XPath.first( doc, "//b"} )
    #  XPath.first( node, "a/x:b", { "x"=>"http://doofus" } )
    #  XPath.first( node, '/book/publisher/text()=$publisher', {}, {"publisher"=>"O'Reilly"})
    def XPath::first(element, path=nil, namespaces=nil, variables={}, options={})
      raise "The namespaces argument, if supplied, must be a hash object." unless namespaces.nil? or namespaces.kind_of?(Hash)
      raise "The variables argument, if supplied, must be a hash object." unless variables.kind_of?(Hash)
      parser = XPathParser.new(**options)
      parser.namespaces = namespaces
      parser.variables = variables
      path = "*" unless path
      element = [element] unless element.kind_of? Array
      parser.parse(path, element).flatten[0]
    end

    # Iterates over nodes that match the given path, calling the supplied
    # block with the match.
    # element::
    #   The context element
    # path::
    #   The xpath to search for.  If not supplied or nil, defaults to '*'
    # namespaces::
    #   If supplied, a Hash which defines a namespace mapping
    # variables::
    #   If supplied, a Hash which maps $variables in the query
    #   to values. This can be used to avoid XPath injection attacks
    #   or to automatically handle escaping string values.
    #
    #  XPath.each( node ) { |el| ... }
    #  XPath.each( node, '/*[@attr='v']' ) { |el| ... }
    #  XPath.each( node, 'ancestor::x' ) { |el| ... }
    #  XPath.each( node, '/book/publisher/text()=$publisher', {}, {"publisher"=>"O'Reilly"}) \
    #    {|el| ... }
    def XPath::each(element, path=nil, namespaces=nil, variables={}, options={}, &block)
      raise "The namespaces argument, if supplied, must be a hash object." unless namespaces.nil? or namespaces.kind_of?(Hash)
      raise "The variables argument, if supplied, must be a hash object." unless variables.kind_of?(Hash)
      parser = XPathParser.new(**options)
      parser.namespaces = namespaces
      parser.variables = variables
      path = "*" unless path
      element = [element] unless element.kind_of? Array
      parser.parse(path, element).each( &block )
    end

    # Returns an array of nodes matching a given XPath.
    def XPath::match(element, path=nil, namespaces=nil, variables={}, options={})
      parser = XPathParser.new(**options)
      parser.namespaces = namespaces
      parser.variables = variables
      path = "*" unless path
      element = [element] unless element.kind_of? Array
      parser.parse(path,element)
    end
  end
end


Current_dir [ NOT WRITEABLE ] Document_root [ NOT WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
21 Mar 2024 10.21 AM
root / root
0755
dtd
--
21 Mar 2024 10.21 AM
root / root
0755
formatters
--
21 Mar 2024 10.21 AM
root / root
0755
light
--
21 Mar 2024 10.21 AM
root / root
0755
parsers
--
21 Mar 2024 10.21 AM
root / root
0755
validation
--
21 Mar 2024 10.21 AM
root / root
0755
attlistdecl.rb
1.924 KB
30 Mar 2023 12.34 PM
root / root
0644
attribute.rb
5.974 KB
30 Mar 2023 12.34 PM
root / root
0644
cdata.rb
1.586 KB
30 Mar 2023 12.34 PM
root / root
0644
child.rb
2.661 KB
30 Mar 2023 12.34 PM
root / root
0644
comment.rb
2.119 KB
30 Mar 2023 12.34 PM
root / root
0644
doctype.rb
7.969 KB
30 Mar 2023 12.34 PM
root / root
0644
document.rb
9.55 KB
30 Mar 2023 12.34 PM
root / root
0644
element.rb
44.529 KB
30 Mar 2023 12.34 PM
root / root
0644
encoding.rb
1.155 KB
30 Mar 2023 12.34 PM
root / root
0644
entity.rb
5.401 KB
30 Mar 2023 12.34 PM
root / root
0644
functions.rb
12.272 KB
30 Mar 2023 12.34 PM
root / root
0644
instruction.rb
2.14 KB
30 Mar 2023 12.34 PM
root / root
0644
namespace.rb
1.402 KB
30 Mar 2023 12.34 PM
root / root
0644
node.rb
2.184 KB
30 Mar 2023 12.34 PM
root / root
0644
output.rb
0.54 KB
30 Mar 2023 12.34 PM
root / root
0644
parent.rb
4.272 KB
30 Mar 2023 12.34 PM
root / root
0644
parseexception.rb
1.253 KB
30 Mar 2023 12.34 PM
root / root
0644
quickpath.rb
9.122 KB
30 Mar 2023 12.34 PM
root / root
0644
rexml.rb
1.288 KB
30 Mar 2023 12.34 PM
root / root
0644
sax2listener.rb
3.606 KB
30 Mar 2023 12.34 PM
root / root
0644
security.rb
0.805 KB
30 Mar 2023 12.34 PM
root / root
0644
source.rb
7.716 KB
30 Mar 2023 12.34 PM
root / root
0644
streamlistener.rb
3.84 KB
30 Mar 2023 12.34 PM
root / root
0644
text.rb
13.879 KB
30 Mar 2023 12.34 PM
root / root
0644
undefinednamespaceexception.rb
0.238 KB
30 Mar 2023 12.34 PM
root / root
0644
xmldecl.rb
2.948 KB
30 Mar 2023 12.34 PM
root / root
0644
xmltokens.rb
2.324 KB
30 Mar 2023 12.34 PM
root / root
0644
xpath.rb
3.419 KB
30 Mar 2023 12.34 PM
root / root
0644
xpath_parser.rb
29.635 KB
30 Mar 2023 12.34 PM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF