$1 and $2 are necessary.
# 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
# File lib/xsd/ns.rb, line 75 75: def assigned?(ns) 76: @default_namespace == ns or @ns2tag.key?(ns) 77: end
# File lib/xsd/ns.rb, line 79 79: def assigned_as_tagged?(ns) 80: @ns2tag.key?(ns) 81: end
# File lib/xsd/ns.rb, line 83 83: def assigned_tag?(tag) 84: @tag2ns.key?(tag) 85: end
# 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
# 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
# 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
# File lib/xsd/ns.rb, line 53 53: def known_tag 54: @assigner ||= Assigner.new(default_known_tag) 55: @assigner.known_tag 56: end
# 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
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
# 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
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
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.