Imported File#ftype spec from rubyspecs.
[rbx.git] / lib / rexml / namespace.rb
blob3e8790580b8ddaea91ec04adcd2c617b8acab486
1 require 'rexml/xmltokens'
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
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
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
37                 alias :local_name :name
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