diff options
Diffstat (limited to 'ruby_1_8_6/lib/xsd/ns.rb')
-rw-r--r-- | ruby_1_8_6/lib/xsd/ns.rb | 140 |
1 files changed, 0 insertions, 140 deletions
diff --git a/ruby_1_8_6/lib/xsd/ns.rb b/ruby_1_8_6/lib/xsd/ns.rb deleted file mode 100644 index 53eeae7130..0000000000 --- a/ruby_1_8_6/lib/xsd/ns.rb +++ /dev/null @@ -1,140 +0,0 @@ -# XSD4R - XML Schema Namespace library -# Copyright (C) 2000-2003, 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>. - -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - - -require 'xsd/datatypes' - - -module XSD - - -class NS - class Assigner - def initialize - @count = 0 - end - - def assign(ns) - @count += 1 - "n#{@count}" - end - end - - attr_reader :default_namespace - - class FormatError < Error; end - -public - - def initialize(tag2ns = {}) - @tag2ns = tag2ns - @assigner = nil - @ns2tag = {} - @tag2ns.each do |tag, ns| - @ns2tag[ns] = tag - end - @default_namespace = nil - end - - 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 - - def assigned?(ns) - @default_namespace == ns or @ns2tag.key?(ns) - end - - def assigned_tag?(tag) - @tag2ns.key?(tag) - end - - def clone_ns - cloned = NS.new(@tag2ns.dup) - cloned.assigner = @assigner - cloned.assign(@default_namespace, '') if @default_namespace - cloned - end - - 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 - - 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 - - # $1 and $2 are necessary. - ParseRegexp = Regexp.new('^([^:]+)(?::(.+))?$') - - def parse(str, local = false) - if ParseRegexp =~ str - if (name = $2) and (ns = @tag2ns[$1]) - return XSD::QName.new(ns, name) - end - end - XSD::QName.new(local ? nil : @default_namespace, str) - end - - # For local attribute key parsing - # <foo xmlns="urn:a" xmlns:n1="urn:a" bar="1" n1:baz="2" /> - # => - # {}bar, {urn:a}baz - def parse_local(elem) - ParseRegexp =~ elem - if $2 - ns = @tag2ns[$1] - name = $2 - if !ns - raise FormatError.new("unknown namespace qualifier: #{$1}") - end - elsif $1 - ns = nil - name = $1 - else - raise FormatError.new("illegal element format: #{elem}") - end - XSD::QName.new(ns, name) - end - - def each_ns - @ns2tag.each do |ns, tag| - yield(ns, tag) - end - end - -protected - - def assigner=(assigner) - @assigner = assigner - end -end - - -end |