In Files

Parent

Namespace

Files

Class Index [+]

Quicksearch

XSD::NS

Constants

Namespace
KNOWN_TAG
ParseRegexp

$1 and $2 are necessary.

Attributes

default_namespace[R]

Public Class Methods

new(tag2ns = nil) click to toggle source
    # File lib/xsd/ns.rb, line 46
46:   def initialize(tag2ns = nil)
47:     @tag2ns = tag2ns || ns_default
48:     @ns2tag = @tag2ns.invert
49:     @assigner = nil
50:     @default_namespace = nil
51:   end

Public Instance Methods

assign(ns, tag = nil) click to toggle source
    # File lib/xsd/ns.rb, line 58
58:   def assign(ns, tag = nil)
59:     if tag == ''
60:       if ns.empty?
61:         @default_namespace = nil
62:       else
63:         @default_namespace = ns
64:       end
65:       tag
66:     else
67:       @assigner ||= Assigner.new(default_known_tag)
68:       tag ||= @assigner.assign(ns)
69:       @ns2tag[ns] = tag
70:       @tag2ns[tag] = ns
71:       tag
72:     end
73:   end
assigned?(ns) click to toggle source
    # File lib/xsd/ns.rb, line 75
75:   def assigned?(ns)
76:     @default_namespace == ns or @ns2tag.key?(ns)
77:   end
assigned_as_tagged?(ns) click to toggle source
    # File lib/xsd/ns.rb, line 79
79:   def assigned_as_tagged?(ns)
80:     @ns2tag.key?(ns)
81:   end
assigned_tag?(tag) click to toggle source
    # File lib/xsd/ns.rb, line 83
83:   def assigned_tag?(tag)
84:     @tag2ns.key?(tag)
85:   end
clone_ns() click to toggle source
    # File lib/xsd/ns.rb, line 87
87:   def clone_ns
88:     cloned = self.class.new(@tag2ns.dup)
89:     cloned.assigner = @assigner
90:     cloned.assign(@default_namespace, '') if @default_namespace
91:     cloned
92:   end
compare(ns, name, rhs) click to toggle source
     # File lib/xsd/ns.rb, line 113
113:   def compare(ns, name, rhs)
114:     if (ns == @default_namespace)
115:       return true if (name == rhs)
116:     end
117:     @tag2ns.each do |assigned_tag, assigned_ns|
118:       if assigned_ns == ns && "#{assigned_tag}:#{name}" == rhs
119:         return true
120:       end
121:     end
122:     false
123:   end
each_ns() click to toggle source
     # File lib/xsd/ns.rb, line 158
158:   def each_ns
159:     @ns2tag.each do |ns, tag|
160:       yield(ns, tag)
161:     end
162:   end
known_tag() click to toggle source
    # File lib/xsd/ns.rb, line 53
53:   def known_tag
54:     @assigner ||= Assigner.new(default_known_tag)
55:     @assigner.known_tag
56:   end
name(qname) click to toggle source
     # File lib/xsd/ns.rb, line 94
 94:   def name(qname)
 95:     if qname.namespace == @default_namespace
 96:       qname.name
 97:     elsif tag = @ns2tag[qname.namespace]
 98:       "#{tag}:#{qname.name}"
 99:     else
100:       raise FormatError.new("namespace: #{qname.namespace} not defined yet")
101:     end
102:   end
name_attr(qname) click to toggle source

no default namespace

     # File lib/xsd/ns.rb, line 105
105:   def name_attr(qname)
106:     if tag = @ns2tag[qname.namespace]
107:       "#{tag}:#{qname.name}"
108:     else
109:       raise FormatError.new("namespace: #{qname.namespace} not defined yet")
110:     end
111:   end
parse(str, local = false) click to toggle source
     # File lib/xsd/ns.rb, line 128
128:   def parse(str, local = false)
129:     if ParseRegexp =~ str
130:       if (name = $2) and (ns = @tag2ns[$1])
131:         return XSD::QName.new(ns, name)
132:       end
133:     end
134:     XSD::QName.new(local ? nil : @default_namespace, str)
135:   end
parse_local(elem) click to toggle source

For local attribute key parsing

  <foo xmlns="urn:a" xmlns:n1="urn:a" bar="1" n1:baz="2" />
    =>
  {}bar, {urn:a}baz
     # File lib/xsd/ns.rb, line 141
141:   def parse_local(elem)
142:     ParseRegexp =~ elem
143:     if $2
144:       ns = @tag2ns[$1]
145:       name = $2
146:       if !ns
147:         raise FormatError.new("unknown namespace qualifier: #{$1}")
148:       end
149:     elsif $1
150:       ns = nil
151:       name = $1
152:     else
153:       raise FormatError.new("illegal element format: #{elem}")
154:     end
155:     XSD::QName.new(ns, name)
156:   end

Protected Instance Methods

assigner=(assigner) click to toggle source
     # File lib/xsd/ns.rb, line 166
166:   def assigner=(assigner)
167:     @assigner = assigner
168:   end

Private Instance Methods

default_known_tag() click to toggle source
     # File lib/xsd/ns.rb, line 176
176:   def default_known_tag
177:     KNOWN_TAG
178:   end
ns_default() click to toggle source
     # File lib/xsd/ns.rb, line 172
172:   def ns_default
173:     {'xml' => Namespace}
174:   end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.