Line | |
---|
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
|
---|
Note:
See
TracBrowser
for help on using the repository browser.