Extension { #name : #Dictionary } { #category : #'*Clouseau' } Dictionary >> asStringTablePresenter [ | tblRows | tblRows := OrderedCollection new. self keysAndValuesDo: [ :aKey :aValue | tblRows add: { aKey -> aValue } ]. ^ SpTablePresenter new addColumn: (SpStringTableColumn title: 'Key' evaluated: [ :anObject | (anObject at: 1) key ]); addColumn: (SpStringTableColumn title: 'Value' evaluated: [ :anObject | (anObject at: 1) value ]); items: tblRows; alternateRowsColor; yourself. ] { #category : #'*Clouseau' } Dictionary >> asStringTreeTablePresenter [ ^ SpTreeTablePresenter new addColumn: (SpStringTableColumn title: 'Key' evaluated: [ :anObject | anObject isDictionary ifTrue: [ anObject isEmpty ifTrue: [ '' ] ifFalse: [ anObject keys at: 1 ] ] ifFalse: [ anObject key ] ]); addColumn: (SpStringTableColumn title: 'Value' evaluated: [ :anObject | anObject isDictionary ifTrue: [ '' ] ifFalse: [ anObject value ] ]); roots: self; children: [ :anItem | anItem value isDictionary ifTrue: [ anItem value isEmpty ifTrue: [ { } ] ifFalse: [ anItem value ] ] ifFalse: [ { } ] ]; yourself ]