File: rexml/namespace.rb

Overview
Module Structure
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: REXML#3
  module: Namespace#5
includes
  XMLTokens ( REXML )
has properties
attribute: name [R] #7
attribute: expanded_name [R] #7
attribute: prefix [RW] #9
constant: NAMESPLIT #11
method: name= / 1 #14
method: has_name? / 2 #27
alias: local_name name #37
method: fully_expanded_name #41

Code

   1  require 'rexml/xmltokens'
   2 
   3  module REXML
   4    # Adds named attributes to an object.
   5    module Namespace
   6      # The name of the object, valid if set
   7      attr_reader :name, :expanded_name
   8      # The expanded name of the object, valid if name is set
   9      attr_accessor :prefix
  10      include XMLTokens
  11      NAMESPLIT = /^(?:(#{NCNAME_STR}):)?(#{NCNAME_STR})/u
  12 
  13      # Sets the name and the expanded name
  14      def name=( name )
  15        @expanded_name = name
  16        name =~ NAMESPLIT
  17        if $1
  18          @prefix = $1
  19        else
  20          @prefix = ""
  21          @namespace = ""
  22        end
  23        @name = $2
  24      end
  25 
  26      # Compares names optionally WITH namespaces
  27      def has_name?( other, ns=nil )
  28        if ns
  29          return (namespace() == ns and name() == other)
  30        elsif other.include? ":"
  31          return fully_expanded_name == other
  32        else
  33          return name == other
  34        end
  35      end
  36 
  37      alias :local_name :name
  38 
  39      # Fully expand the name, even if the prefix wasn't specified in the
  40      # source file.
  41      def fully_expanded_name
  42        ns = prefix
  43        return "#{ns}:#@name" if ns.size > 0 
  44        return @name
  45      end
  46    end
  47  end