Does anyone have a code snippet that will print out an array structure for easy viewing, similar to print_r in PHP? miva_array_deserialize is NOT cutting it ;)
Thanks,
Susan
Thanks,
Susan
<MvCOMMENT> ======================= DebugStructure ======================= Purpose: send structure to screen Input: structure Output: Last change: 01/15/2013 gdc - renamed function name </MvCOMMENT> <MvFUNCTION NAME="DebugStructure" PARAMETERS="structure" STANDARDOUTPUTLEVEL=""> <MvASSIGN NAME="l.debug_array" VALUE="{ miva_array_serialize(l.structure) }"> <MvASSIGN NAME="l.debug_use_break" VALUE="1"> <MvASSIGN NAME="l.debug_pos" VALUE="1"> <MvASSIGN NAME="l.debug_text" VALUE="{ gettoken(l.debug_array, ',', l.debug_pos) }"> <MvEVAL EXPR="{ '<div style="background-color:white; color:black;"><ul>' }"> <MvWHILE EXPR="{ l.debug_text }"> <MvIF EXPR="{ l.debug_use_break }"> <MvASSIGN NAME="l.debug_num" VALUE="{ len(l.debug_text) - (len(glosub(l.debug_text, ':', '')))}"> <MvASSIGN NAME="l.debug_count" VALUE="0"> <MvASSIGN NAME="l.debug_test" VALUE=""> <MvWHILE EXPR="{ l.debug_count LT l.debug_num }"> <MvASSIGN NAME="l.debug_count" VALUE="{ l.debug_count + 1 }"> <MvASSIGN NAME="l.debug_test" VALUE="{ l.debug_test $ gettoken(l.debug_text, ':', l.debug_num) }"> </MvWHILE> <MvIF EXPR="{ l.debug_test NE l.debug_previous }"> <MvEVAL EXPR="<br>"> </MvIF> <MvASSIGN NAME="l.debug_previous" VALUE="{ l.debug_test }"> </MvIF> <MvIF EXPR="{ asciichar(60) IN decodeattribute(l.debug_text) }"> <MvEVAL EXPR="{ '<pre>' $ encodeentities(decodeattribute(l.debug_text)) $ '</pre>' }"> <MvELSE> <MvEVAL EXPR="{ decodeattribute(l.debug_text) $ '<br>' }"> </MvIF> <MvASSIGN NAME="l.debug_pos" VALUE="{ l.debug_pos + 1 }"> <MvASSIGN NAME="l.debug_text" VALUE="{ gettoken(l.debug_array, ',', l.debug_pos) }"> </MvWHILE> <MvEVAL EXPR="{ '<br></div></ul>' }"> </MvFUNCTION>
<MvFUNCTION NAME="Structure" PARAMETERS="data, delim" STANDARDOUTPUTLEVEL=""> <MvASSIGN NAME="l.v" VALUE="{ miva_array_serialize(l.data) }"> <MvIF EXPR="{ substring(l.v, 1, 1) EQ '=' }"> <MvFUNCRETURN VALUE="{ l.data }"> </MvIF> <MvWHILE EXPR="{ gettoken(l.v, ',', l.n + 1) }"> <MvASSIGN NAME="l.n" VALUE="{ l.n + 1 }"> <MvASSIGN NAME="l.fld" VALUE="{ gettoken(l.v, ',', l.n) }"> <MvASSIGN NAME="l.fnam" VALUE="{ gettoken(l.fld, '=', 1) }"> <MvASSIGN NAME="l.fval" VALUE="{ decodeattribute(gettoken(l.fld, '=', 2)) }"> <MvASSIGN NAME="l.ret" VALUE="{ l.ret $ l.fnam $ '=' $ l.fval }"> <MvIF EXPR="{ gettoken(l.v, ',', l.n + 1) }"> <MvASSIGN NAME="l.ret" VALUE="{ l.ret $ l.delim }"> </MvIF> </MvWHILE> <MvFUNCRETURN VALUE="{ l.ret }"> </MvFUNCTION>
Comment