Extended maintenance of Ruby versions 1.8.7 and 1.9.2 ended on July 31, 2014. Read more

In Files

  • soap/encodingstyle/literalHandler.rb

Class/Module Index [+]

Quicksearch

SOAP::EncodingStyle::LiteralHandler

Constants

Namespace

Public Class Methods

new(charset = nil) click to toggle source
 
               # File soap/encodingstyle/literalHandler.rb, line 20
def initialize(charset = nil)
  super(charset)
  @textbuf = ''
end
            

Public Instance Methods

decode_attrs(ns, attrs) click to toggle source
 
               # File soap/encodingstyle/literalHandler.rb, line 165
def decode_attrs(ns, attrs)
  extraattr = {}
  attrs.each do |key, value|
    qname = ns.parse_local(key)
    extraattr[qname] = value
  end
  extraattr
end
            
decode_epilogue() click to toggle source
 
               # File soap/encodingstyle/literalHandler.rb, line 177
def decode_epilogue
end
            
decode_parent(parent, node) click to toggle source
 
               # File soap/encodingstyle/literalHandler.rb, line 180
def decode_parent(parent, node)
  return unless parent.node
  case parent.node
  when SOAPUnknown
    newparent = parent.node.as_element
    node.parent = newparent
    parent.replace_node(newparent)
    decode_parent(parent, node)
  when SOAPElement
    parent.node.add(node)
    node.parent = parent.node
  when SOAPStruct
    parent.node.add(node.elename.name, node)
    node.parent = parent.node
  when SOAPArray
    if node.position
      parent.node[*(decode_arypos(node.position))] = node
      parent.node.sparse = true
    else
      parent.node.add(node)
    end
    node.parent = parent.node
  else
    raise EncodingStyleError.new("illegal parent: #{parent.node}")
  end
end
            
decode_prologue() click to toggle source
 
               # File soap/encodingstyle/literalHandler.rb, line 174
def decode_prologue
end
            
decode_tag(ns, elename, attrs, parent) click to toggle source
 
               # File soap/encodingstyle/literalHandler.rb, line 137
def decode_tag(ns, elename, attrs, parent)
  @textbuf = ''
  o = SOAPUnknown.new(self, elename, decode_attrs(ns, attrs))
  o.parent = parent
  o
end
            
decode_tag_end(ns, node) click to toggle source
 
               # File soap/encodingstyle/literalHandler.rb, line 144
def decode_tag_end(ns, node)
  o = node.node
  if o.is_a?(SOAPUnknown)
    newnode = if /\A\s*\z/ =~ @textbuf
        o.as_element
      else
        o.as_string
      end
    node.replace_node(newnode)
    o = node.node
  end

  decode_textbuf(o)
  @textbuf = ''
end
            
decode_text(ns, text) click to toggle source
 
               # File soap/encodingstyle/literalHandler.rb, line 160
def decode_text(ns, text)
  # @textbuf is set at decode_tag_end.
  @textbuf << text
end
            
encode_data(generator, ns, data, parent) click to toggle source

encode interface.

 
               # File soap/encodingstyle/literalHandler.rb, line 29
def encode_data(generator, ns, data, parent)
  attrs = {}
  name = generator.encode_name(ns, data, attrs)
  data.extraattr.each do |k, v|
    # ToDo: check generator.attributeformdefault here
    if k.is_a?(XSD::QName)
      if k.namespace
        SOAPGenerator.assign_ns(attrs, ns, k.namespace)
        k = ns.name(k)
      else
        k = k.name
      end
    end
    attrs[k] = v
  end
  case data
  when SOAPRawString
    generator.encode_tag(name, attrs)
    generator.encode_rawstring(data.to_s)
  when XSD::XSDString
    generator.encode_tag(name, attrs)
    str = data.to_s
    str = XSD::Charset.encoding_to_xml(str, @charset) if @charset
    generator.encode_string(str)
  when XSD::XSDAnySimpleType
    generator.encode_tag(name, attrs)
    generator.encode_string(data.to_s)
  when SOAPStruct
    generator.encode_tag(name, attrs)
    data.each do |key, value|
      generator.encode_child(ns, value, data)
    end
  when SOAPArray
    generator.encode_tag(name, attrs)
    data.traverse do |child, *rank|
      data.position = nil
      generator.encode_child(ns, child, data)
    end
  when SOAPElement
    # passes 2 times for simplifying namespace definition
    data.each do |key, value|
      if value.elename.namespace
        SOAPGenerator.assign_ns(attrs, ns, value.elename.namespace)
      end
    end
    generator.encode_tag(name, attrs)
    generator.encode_rawstring(data.text) if data.text
    data.each do |key, value|
      generator.encode_child(ns, value, data)
    end
  else
    raise EncodingStyleError.new(
      "unknown object:#{data} in this encodingStyle")
  end
end
            
encode_data_end(generator, ns, data, parent) click to toggle source
 
               # File soap/encodingstyle/literalHandler.rb, line 85
def encode_data_end(generator, ns, data, parent)
  name = generator.encode_name_end(ns, data)
  cr = (data.is_a?(SOAPCompoundtype) or
    (data.is_a?(SOAPElement) and !data.text))
  generator.encode_tag_end(name, cr)
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