77 lines
1.7 KiB
Smalltalk
77 lines
1.7 KiB
Smalltalk
Object
|
|
subclass: #Test2
|
|
instanceVariableNames: ''!
|
|
{!
|
|
Test2 methods!
|
|
on: s
|
|
"try all classes"
|
|
| f t k |
|
|
(f <- File name: s mode: 'w') open.
|
|
t <- 9 asCharacter asString.
|
|
k <- classes sort: [ :x :y | x name asString < y name asString ].
|
|
k do: [ :e | self on: f tab: t put: e ].
|
|
f close!
|
|
on: s put: c
|
|
"try one class"
|
|
| f t |
|
|
(f <- File name: s mode: 'w') open.
|
|
t <- 9 asCharacter asString.
|
|
self on: f tab: t putCN: c.
|
|
self on: f tab: t putSN: c.
|
|
self on: f tab: t putVN: c.
|
|
self on: f tab: t putCM: c.
|
|
self on: f tab: t putIM: c.
|
|
f close!
|
|
on: f tab: t put: c
|
|
"try all classes"
|
|
self on: f tab: t putCN: c.
|
|
self on: f tab: t putSN: c.
|
|
self on: f tab: t putVN: c.
|
|
self on: f tab: t putCM: c.
|
|
self on: f tab: t putIM: c!
|
|
on: f tab: t putCM: c
|
|
| n v |
|
|
n <- 10 asCharacter.
|
|
f print: 'class methods'.
|
|
v <- c class methods sort: [ :x :y | x name asString < y name asString ].
|
|
f print: '==='.
|
|
v do: [ :e |
|
|
f print: e trimmedText.
|
|
f print: '===' ]!
|
|
on: f tab: t putCN: c
|
|
f print: 'class name' , t , c name asString!
|
|
on: f tab: t putIM: c
|
|
| n v |
|
|
n <- 10 asCharacter.
|
|
f print: 'methods'.
|
|
v <- c methods sort: [ :x :y | x name asString < y name asString ].
|
|
f print: '==='.
|
|
v do: [ :e |
|
|
f print: e trimmedText.
|
|
f print: '===' ]!
|
|
on: f tab: t putSN: c
|
|
| v |
|
|
v <- c superClass.
|
|
v isNil ifTrue: [
|
|
v <- '<nil>' ]
|
|
ifFalse: [
|
|
v <- v asString ].
|
|
f print: 'superclass name' , t , v!
|
|
on: f tab: t putVN: c
|
|
| v |
|
|
v <- c variables.
|
|
v isNil ifTrue: [
|
|
v <- #('<nil>') ]
|
|
ifFalse: [
|
|
v <- (v collect: [ :e | e asString ]) sort ].
|
|
v inject: 'variable names' into: [ :x :y |
|
|
f print: x , t , y.
|
|
' ' ]!
|
|
tryAll
|
|
"try all classes"
|
|
self on: 'test2.all.out'!
|
|
tryOne
|
|
"try one class"
|
|
self on: 'test2.one.out' put: self class!
|
|
}!
|