Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

Rebol Programming/dump-obj

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

USAGE: DUMP-OBJ obj /match pat DESCRIPTION: Returns a block of information about an object. DUMP-OBJ is a function value. ARGUMENTS obj -- (Type: object) REFINEMENTS /match -- Include only those that match a string or datatype pat -- (Type: any) SOURCE CODE dump-obj: func [ "Returns a block of information about an object." obj [object!] /match "Include only those that match a string or datatype" pat /local clip-str form-val form-pad words vals str wild ][ clip-str: func [str] [ trim/lines str if (length? str) > 50 [str: append copy/part str 50 "..."] str ] form-val: func [val] [ if any-block? :val [return reform ["length:" length? val]] if image? :val [return reform ["size:" val/size]] if any-function? :val [ val: third :val if block? val/1 [val: next val] return clip-str either string? val/1 [copy val/1] [mold val] ] if object? :val [val: next first val] clip-str mold :val ] form-pad: func [val size] [ val: form val insert/dup tail val #" " size - length? val val ] words: first obj vals: next second obj obj: copy [] wild: all [string? pat find pat "*"] foreach word next words [ type: type?/word pick vals 1 str: form word if any [ not match all [ not unset? pick vals 1 either string? :pat [ either wild [ tail? any [find/any/match str pat pat] ] [ find str pat ] ] [ all [ datatype? get :pat type = :pat ] ] ] ] [ str: form-pad word 15 append str #" " append str form-pad type 10 - ((length? str) - 15) append obj reform [ " " str if type <> 'unset! [form-val pick vals 1] newline ] ] vals: next vals ] obj ]