Class: SOAP::SOAPArray
Constant Summary
Constants included
from SOAP
AttrActor, AttrActorName, AttrArrayType, AttrArrayTypeName, AttrEncodingStyle, AttrEncodingStyleName, AttrHref, AttrHrefName, AttrId, AttrIdName, AttrMustUnderstand, AttrMustUnderstandName, AttrOffset, AttrOffsetName, AttrPosition, AttrPositionName, AttrRoot, AttrRootName, Base64Literal, EleBody, EleBodyName, EleEnvelope, EleEnvelopeName, EleFault, EleFaultActor, EleFaultActorName, EleFaultCode, EleFaultCodeName, EleFaultDetail, EleFaultDetailName, EleFaultName, EleFaultString, EleFaultStringName, EleHeader, EleHeaderName, EncodingNamespace, EnvelopeNamespace, LiteralNamespace, MediaType, NextActor, PropertyName, SOAPNamespaceTag, SOAPProxy, TypeMap, ValueArray, ValueArrayName, Version, XSDNamespaceTag, XSINamespaceTag
Instance Attribute Summary collapse
#qualified
Attributes included from SOAPType
#definedtype, #elename, #encodingstyle, #extraattr, #force_typed, #id, #parent, #precedents, #root
Attributes inherited from XSD::NSDBase
#type
Instance Method Summary
collapse
Methods included from SOAPType
#inspect, #rootnode
inherited, #init, types
Constructor Details
#initialize(type = nil, rank = 1, arytype = nil) ⇒ SOAPArray
Returns a new instance of SOAPArray.
868
869
870
871
872
873
874
875
876
877
878
879
|
# File 'lib/soap/baseData.rb', line 868
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
|
Instance Attribute Details
Returns the value of attribute arytype.
866
867
868
|
# File 'lib/soap/baseData.rb', line 866
def arytype
@arytype
end
|
Returns the value of attribute offset.
864
865
866
|
# File 'lib/soap/baseData.rb', line 864
def offset
@offset
end
|
Returns the value of attribute rank.
864
865
866
|
# File 'lib/soap/baseData.rb', line 864
def rank
@rank
end
|
Returns the value of attribute size.
865
866
867
|
# File 'lib/soap/baseData.rb', line 865
def size
@size
end
|
#size_fixed ⇒ Object
Returns the value of attribute size_fixed.
865
866
867
|
# File 'lib/soap/baseData.rb', line 865
def size_fixed
@size_fixed
end
|
Returns the value of attribute sparse.
862
863
864
|
# File 'lib/soap/baseData.rb', line 862
def sparse
@sparse
end
|
Instance Method Details
#[](*idxary) ⇒ Object
894
895
896
897
898
899
|
# File 'lib/soap/baseData.rb', line 894
def [](*idxary)
if idxary.size != @rank
raise ArgumentError.new("given #{idxary.size} params does not match rank: #{@rank}")
end
retrieve(idxary)
end
|
#[]=(*idxary) ⇒ Object
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
|
# File 'lib/soap/baseData.rb', line 901
def []=(*idxary)
value = idxary.slice!(-1)
@item_name = value.type.name.sub("Type","") 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 = XSD::QName.new(nil, @item_name) 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
|
#add(value) ⇒ Object
886
887
888
|
# File 'lib/soap/baseData.rb', line 886
def add(value)
self[*(@offset)] = value
end
|
#deep_map(ary, &block) ⇒ Object
947
948
949
950
951
952
953
954
955
956
957
|
# File 'lib/soap/baseData.rb', line 947
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
|
931
932
933
934
935
|
# File 'lib/soap/baseData.rb', line 931
def each
@data.each do |data|
yield(data)
end
end
|
#have_member ⇒ Object
890
891
892
|
# File 'lib/soap/baseData.rb', line 890
def have_member
!@data.empty?
end
|
#include?(var) ⇒ Boolean
959
960
961
962
963
964
965
966
|
# File 'lib/soap/baseData.rb', line 959
def include?(var)
traverse_data(@data) do |v, *rank|
if v.is_a?(SOAPBasetype) && v.data == var
return true
end
end
false
end
|
999
1000
1001
|
# File 'lib/soap/baseData.rb', line 999
def position
@position
end
|
941
942
943
944
945
|
# File 'lib/soap/baseData.rb', line 941
def replace
@data = deep_map(@data) do |ele|
yield(ele)
end
end
|
#soap2array(ary) ⇒ Object
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
|
# File 'lib/soap/baseData.rb', line 978
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
|
937
938
939
|
# File 'lib/soap/baseData.rb', line 937
def to_a
@data.dup
end
|
968
969
970
971
972
973
974
975
976
|
# File 'lib/soap/baseData.rb', line 968
def traverse
traverse_data(@data) do |v, *rank|
unless @sparse
yield(v)
else
yield(v, *rank) if v && !v.is_a?(SOAPNil)
end
end
end
|