Sha256: 716ee290f20744fd6f3fa5fe7352cd3fd69b9394f865827bfad121c12d476264

Contents?: true

Size: 1.56 KB

Versions: 133

Compression:

Stored size: 1.56 KB

Contents

# frozen_string_literal: true

require_relative 'xmltokens'

module REXML
  # Adds named attributes to an object.
  module Namespace
    # The name of the object, valid if set
    attr_reader :name, :expanded_name
    # The expanded name of the object, valid if name is set
    attr_accessor :prefix
    include XMLTokens
    NAME_WITHOUT_NAMESPACE = /\A#{NCNAME_STR}\z/
    NAMESPLIT = /^(?:(#{NCNAME_STR}):)?(#{NCNAME_STR})/u

    # Sets the name and the expanded name
    def name=( name )
      @expanded_name = name
      if name.match?(NAME_WITHOUT_NAMESPACE)
        @prefix = ""
        @namespace = ""
        @name = name
      elsif name =~ NAMESPLIT
        if $1
          @prefix = $1
        else
          @prefix = ""
          @namespace = ""
        end
        @name = $2
      elsif name == ""
        @prefix = nil
        @namespace = nil
        @name = nil
      else
        message = "name must be \#{PREFIX}:\#{LOCAL_NAME} or \#{LOCAL_NAME}: "
        message += "<#{name.inspect}>"
        raise ArgumentError, message
      end
    end

    # Compares names optionally WITH namespaces
    def has_name?( other, ns=nil )
      if ns
        return (namespace() == ns and name() == other)
      elsif other.include? ":"
        return fully_expanded_name == other
      else
        return name == other
      end
    end

    alias :local_name :name

    # Fully expand the name, even if the prefix wasn't specified in the
    # source file.
    def fully_expanded_name
      ns = prefix
      return "#{ns}:#@name" if ns.size > 0
      return @name
    end
  end
end

Version data entries

133 entries across 133 versions & 17 rubygems

Version Path
docspring-3.0.0 vendor/bundle/ruby/3.3.0/gems/rexml-3.4.0/lib/rexml/namespace.rb
rexml-3.4.1 lib/rexml/namespace.rb
tailscale_middleware-0.0.3 vendor/cache/ruby/3.4.0/gems/rexml-3.4.0/lib/rexml/namespace.rb
minato_ruby_api_client-0.2.2 vendor/bundle/ruby/3.2.0/gems/rexml-3.3.2/lib/rexml/namespace.rb
brakeman-7.0.0 bundle/ruby/3.1.0/gems/rexml-3.4.0/lib/rexml/namespace.rb
rexml-3.4.0 lib/rexml/namespace.rb
cloudsmith-api-2.0.16 vendor/bundle/ruby/2.6.0/gems/rexml-3.3.9/lib/rexml/namespace.rb
rexml-3.3.9 lib/rexml/namespace.rb
brakeman-6.2.2 bundle/ruby/3.1.0/gems/rexml-3.3.8/lib/rexml/namespace.rb
brakeman-6.2.2.rc1 bundle/ruby/3.3.0/gems/rexml-3.3.8/lib/rexml/namespace.rb
cloudsmith-api-2.0.15 vendor/bundle/ruby/2.6.0/gems/rexml-3.3.8/lib/rexml/namespace.rb
cloudsmith-api-2.0.14 vendor/bundle/ruby/2.6.0/gems/rexml-3.3.8/lib/rexml/namespace.rb
rexml-3.3.8 lib/rexml/namespace.rb
rexml-3.3.7 lib/rexml/namespace.rb
brakeman-6.2.1 bundle/ruby/3.1.0/gems/rexml-3.3.6/lib/rexml/namespace.rb
brakeman-6.2.0 bundle/ruby/3.1.0/gems/rexml-3.3.6/lib/rexml/namespace.rb
rexml-3.3.6 lib/rexml/namespace.rb
rexml-3.3.5 lib/rexml/namespace.rb
rexml-3.3.4 lib/rexml/namespace.rb
rexml-3.3.3 lib/rexml/namespace.rb