# File lib/soap/baseData.rb, line 865 def initialize(type = nil, rank = 1, arytype = nil) super() @type = type || ValueArrayName @rank = rank @data = Array.new @sparse = false @offset = Array.new(rank, 0) @size = Array.new(rank, 0) @size_fixed = false @position = nil @arytype = arytype end
# File lib/soap/baseData.rb, line 891 def [](*idxary) if idxary.size != @rank raise ArgumentError.new("given #{idxary.size} params does not match rank: #{@rank}") end retrieve(idxary) end
# File lib/soap/baseData.rb, line 898 def []=(*idxary) value = idxary.slice!(-1) if idxary.size != @rank raise ArgumentError.new("given #{idxary.size} params(#{idxary}) does not match rank: #{@rank}") end idx = 0 while idx < idxary.size if idxary[idx] + 1 > @size[idx] @size[idx] = idxary[idx] + 1 end idx += 1 end data = retrieve(idxary[0, idxary.size - 1]) data[idxary.last] = value if value.is_a?(SOAPType) value.elename = ITEM_NAME # Sync type unless @type.name @type = XSD::QName.new(value.type.namespace, SOAPArray.create_arytype(value.type.name, @rank)) end value.type ||= @type end @offset = idxary value.parent = self if value.respond_to?(:parent=) offsetnext end
# File lib/soap/baseData.rb, line 883 def add(value) self[*(@offset)] = value end
# File lib/soap/baseData.rb, line 942 def deep_map(ary, &block) ary.collect do |ele| if ele.is_a?(Array) deep_map(ele, &block) else new_obj = block.call(ele) new_obj.elename = ITEM_NAME new_obj end end end
# File lib/soap/baseData.rb, line 926 def each @data.each do |data| yield(data) end end
# File lib/soap/baseData.rb, line 887 def have_member !@data.empty? end
# File lib/soap/baseData.rb, line 954 def include?(var) traverse_data(@data) do |v, *rank| if v.is_a?(SOAPBasetype) && v.data == var return true end end false end
# File lib/soap/baseData.rb, line 878 def offset=(var) @offset = var @sparse = true end
# File lib/soap/baseData.rb, line 936 def replace @data = deep_map(@data) do |ele| yield(ele) end end
# File lib/soap/baseData.rb, line 973 def soap2array(ary) traverse_data(@data) do |v, *position| iteary = ary rank = 1 while rank < position.size idx = position[rank - 1] if iteary[idx].nil? iteary = iteary[idx] = Array.new else iteary = iteary[idx] end rank += 1 end if block_given? iteary[position.last] = yield(v) else iteary[position.last] = v end end end
Generated with the Darkfish Rdoc Generator 2.