In: |
xsd/ns.rb
|
Parent: | Object |
ParseRegexp | = | Regexp.new('^([^:]+)(?::(.+))?$') |
$1 and $2 are necessary. |
default_namespace | [R] |
# File xsd/ns.rb, line 33 def initialize(tag2ns = {}) @tag2ns = tag2ns @assigner = nil @ns2tag = {} @tag2ns.each do |tag, ns| @ns2tag[ns] = tag end @default_namespace = nil end
# File xsd/ns.rb, line 43 def assign(ns, tag = nil) if (tag == '') @default_namespace = ns tag else @assigner ||= Assigner.new tag ||= @assigner.assign(ns) @ns2tag[ns] = tag @tag2ns[tag] = ns tag end end
# File xsd/ns.rb, line 64 def clone_ns cloned = NS.new(@tag2ns.dup) cloned.assigner = @assigner cloned.assign(@default_namespace, '') if @default_namespace cloned end
# File xsd/ns.rb, line 81 def compare(ns, name, rhs) if (ns == @default_namespace) return true if (name == rhs) end @tag2ns.each do |assigned_tag, assigned_ns| if assigned_ns == ns && "#{ assigned_tag }:#{ name }" == rhs return true end end false end
# File xsd/ns.rb, line 71 def name(name) if (name.namespace == @default_namespace) name.name elsif @ns2tag.key?(name.namespace) @ns2tag[name.namespace] + ':' << name.name else raise FormatError.new('Namespace: ' << name.namespace << ' not defined yet.') end end
# File xsd/ns.rb, line 96 def parse(elem) ns = nil name = nil ParseRegexp =~ elem if $2 ns = @tag2ns[$1] name = $2 if !ns raise FormatError.new('Unknown namespace qualifier: ' << $1) end elsif $1 ns = @default_namespace name = $1 end if !name raise FormatError.new("Illegal element format: #{ elem }") end XSD::QName.new(ns, name) end