In Files

  • xsd/ns.rb

Class/Module Index [+]

Quicksearch

XSD::NS

Constants

ParseRegexp

$1 and $2 are necessary.

Attributes

default_namespace[R]

Public Class Methods

new(tag2ns = {}) click to toggle source
 
               # 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
            

Public Instance Methods

assign(ns, tag = nil) click to toggle source
 
               # 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
            
assigned?(ns) click to toggle source
 
               # File xsd/ns.rb, line 56
def assigned?(ns)
  @default_namespace == ns or @ns2tag.key?(ns)
end
            
assigned_tag?(tag) click to toggle source
 
               # File xsd/ns.rb, line 60
def assigned_tag?(tag)
  @tag2ns.key?(tag)
end
            
clone_ns() click to toggle source
 
               # 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
            
compare(ns, name, rhs) click to toggle source
 
               # 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
            
each_ns() click to toggle source
 
               # File xsd/ns.rb, line 126
def each_ns
  @ns2tag.each do |ns, tag|
    yield(ns, tag)
  end
end
            
name(name) click to toggle source
 
               # 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
            
parse(str, local = false) click to toggle source
 
               # File xsd/ns.rb, line 96
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
            
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 xsd/ns.rb, line 109
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
            

Protected Instance Methods

assigner=(assigner) click to toggle source
 
               # File xsd/ns.rb, line 134
def assigner=(assigner)
  @assigner = assigner
end
            

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.

blog comments powered by Disqus