OSDN Git Service

ruby-1.9.1-rc1
[splhack/AndroidRuby.git] / lib / ruby-1.9.1-rc1 / lib / rexml / namespace.rb
diff --git a/lib/ruby-1.9.1-rc1/lib/rexml/namespace.rb b/lib/ruby-1.9.1-rc1/lib/rexml/namespace.rb
new file mode 100644 (file)
index 0000000..8d43fc8
--- /dev/null
@@ -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