File: namespace.rb

package info (click to toggle)
jruby 1.7.26-1%2Bdeb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 84,572 kB
  • sloc: ruby: 669,910; java: 253,056; xml: 35,152; ansic: 9,187; yacc: 7,267; cpp: 5,244; sh: 1,036; makefile: 345; jsp: 48; tcl: 40
file content (47 lines) | stat: -rw-r--r-- 1,018 bytes parent folder | download | duplicates (15)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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