;******************************************************************************* ;* NAME: PPRINT ;* DESCRIPTION: return a human-comsumable string that is a concise representation of the ;* IDL value. This is for debugging only, and not for machine consumption!!! For ;* example a indgen(50) is printed like "fltarr(50)[0,1,2,3,4,...]". papco_objects ;* toString function is called, etc. ;* INPUTS: ;* VAR, expr, any IDL expression. ;* OUTPUT KEYWORDS: ;* out, string, the formated value. ;* SIDE EFFECTS: ;* EXCEPTIONS: ;* EXAMPLES: ;* UNIT TEST: ;* CVSTAG: ;* $Name: $ ;* $Revision: 1.1 $ ;* CURATOR: NAME ;* HISTORY: ;* DATE, REV, written by Jeremy Faden ;******************************************************************************* pro nbidl_pprint, var, out=out on_error, 2 if n_elements( var ) eq 0 then begin out= '' print, out return endif if ( size( var, /type ) eq 8 ) then begin ; if ( papco_ds_isDs(var) ) then begin ; help, /str, papco_ds_strip_metadata(var), out=out ; out= [ out, '(metadata omitted)' ] ; endif else begin help, /str, var, out=out ; endelse print, transpose( out ) return endif s= size( var ) if s[0] eq 0 then begin out= nbidl_varprt(var, /debug ) print, out endif else begin ;; array n= n_elements(var) s= size(var) if n gt 5 then begin types= [ '', 'byt', 'int', 'lon', 'flt', 'dbl', 'complex', 'str', 'struct', 'dcomplex', 'ptr', 'obj', '', '', '', '' ] stype= size(var, /type ) type= types[stype] + 'arr' result= type+'('+strjoin(strtrim(s[1:s[0]],2),',')+')[ ' if ( s[0] eq 2 ) then begin ; two-dim array print, result spaces= string( replicate( byte(' '), strlen(result) ) ) result= spaces endif endif else begin result= '[ ' endelse if ( s[0] eq 2 ) then begin n1= s[1] <4 n2= s[2] <4 for i=0, n2-2 do begin result= result+ '[ ' for j=0,n1-2 do begin result= result + nbidl_varprt( var[j,i], /debug ) + ', ' endfor if s[1] gt n1 then begin result= result + nbidl_varprt( var[n1-1,i], /debug ) + ', ... ]' print, result result= spaces endif else begin result= result + nbidl_varprt( var[n1-1,i], /debug ) + ' ]' print, result result= spaces endelse endfor if ( s[2] gt n2 ) then begin result= result + '... ]' endif else begin result= result + ']' endelse endif else begin n= n_elements(var) <5 for i=0, n-2 do begin result= result + nbidl_varprt( var[i], /debug ) + ', ' endfor if n_elements( var ) gt n then begin result= result + nbidl_varprt( var[n-1], /debug ) + ', ... ]' endif else begin result= result + nbidl_varprt( var[n-1], /debug ) + ' ]' endelse endelse out= result print, out endelse end