| Class | SOAP::SOAPStruct |
| In: |
lib/soap/baseData.rb
|
| Parent: | XSD::NSDBase |
# File lib/soap/baseData.rb, line 486
486: def self.decode(elename, type)
487: s = SOAPStruct.new(type)
488: s.elename = elename
489: s
490: end
# File lib/soap/baseData.rb, line 400
400: def initialize(type = nil)
401: super()
402: @type = type || XSD::QName::EMPTY
403: @array = []
404: @data = []
405: end
# File lib/soap/baseData.rb, line 419
419: def [](idx)
420: if idx.is_a?(Range)
421: @data[idx]
422: elsif idx.is_a?(Integer)
423: if (idx > @array.size)
424: raise ArrayIndexOutOfBoundsError.new('In ' << @type.name)
425: end
426: @data[idx]
427: else
428: if @array.include?(idx)
429: @data[@array.index(idx)]
430: else
431: nil
432: end
433: end
434: end
# File lib/soap/baseData.rb, line 436
436: def []=(idx, data)
437: if @array.include?(idx)
438: data.parent = self if data.respond_to?(:parent=)
439: @data[@array.index(idx)] = data
440: else
441: add(idx, data)
442: end
443: end
# File lib/soap/baseData.rb, line 415
415: def add(name, value)
416: add_member(name, value)
417: end
# File lib/soap/baseData.rb, line 472
472: def each
473: idx = 0
474: while idx < @array.length
475: yield(@array[idx], @data[idx])
476: idx += 1
477: end
478: end
# File lib/soap/baseData.rb, line 480
480: def replace
481: members.each do |member|
482: self[member] = yield(self[member])
483: end
484: end
# File lib/soap/baseData.rb, line 453
453: def to_obj
454: hash = {}
455: proptype = {}
456: each do |k, v|
457: value = v.respond_to?(:to_obj) ? v.to_obj : v.to_s
458: case proptype[k]
459: when :single
460: hash[k] = [hash[k], value]
461: proptype[k] = :multi
462: when :multi
463: hash[k] << value
464: else
465: hash[k] = value
466: proptype[k] = :single
467: end
468: end
469: hash
470: end
# File lib/soap/baseData.rb, line 407
407: def to_s()
408: str = ''
409: self.each do |key, data|
410: str << "#{key}: #{data}\n"
411: end
412: str
413: end