summaryrefslogtreecommitdiff
path: root/ruby_1_8_5/lib/rexml/namespace.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ruby_1_8_5/lib/rexml/namespace.rb')
-rw-r--r--ruby_1_8_5/lib/rexml/namespace.rb47
1 files changed, 47 insertions, 0 deletions
diff --git a/ruby_1_8_5/lib/rexml/namespace.rb b/ruby_1_8_5/lib/rexml/namespace.rb
new file mode 100644
index 0000000000..3e8790580b
--- /dev/null
+++ b/ruby_1_8_5/lib/rexml/namespace.rb
@@ -0,0 +1,47 @@
+require 'rexml/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
+ NAMESPLIT = /^(?:(#{NCNAME_STR}):)?(#{NCNAME_STR})/u
+
+ # Sets the name and the expanded name
+ def name=( name )
+ @expanded_name = name
+ name =~ NAMESPLIT
+ if $1
+ @prefix = $1
+ else
+ @prefix = ""
+ @namespace = ""
+ end
+ @name = $2
+ 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