author | Claus Gittinger <cg@exept.de> |
Sat, 05 Feb 2000 15:28:34 +0100 | |
changeset 899 | 7b65d6f2b0f0 |
parent 895 | f8702324cc12 |
child 901 | 8fd26c5e8e8f |
permissions | -rw-r--r-- |
688 | 1 |
Object subclass:#SystemOrganizer |
2 |
instanceVariableNames:'categoryArray categories nameSpace' |
|
3 |
classVariableNames:'' |
|
4 |
poolDictionaries:'' |
|
5 |
category:'Kernel-Support' |
|
6 |
! |
|
7 |
||
8 |
||
9 |
!SystemOrganizer class methodsFor:'instance creation'! |
|
10 |
||
11 |
for:aNameSpace |
|
12 |
"create & return a new instance of myself, to organize aNameSpace" |
|
13 |
||
14 |
^ self new nameSpace:aNameSpace |
|
15 |
||
16 |
"Created: / 20.6.1998 / 12:33:52 / cg" |
|
17 |
! ! |
|
18 |
||
19 |
!SystemOrganizer methodsFor:'accessing'! |
|
20 |
||
21 |
categories |
|
22 |
"return a collection of my classes class-categories. |
|
23 |
If my nameSpace is nil, all classes' categories are included; |
|
24 |
otherwise, only the categories of that particular namespace." |
|
25 |
||
26 |
|set categorySet searchedNamespace allNames| |
|
27 |
||
28 |
categoryArray isNil ifTrue:[ |
|
29 |
categorySet := Set new. |
|
30 |
||
31 |
(searchedNamespace := nameSpace) isNil ifTrue:[ |
|
32 |
allNames := true. |
|
33 |
searchedNamespace := Smalltalk. |
|
34 |
]. |
|
35 |
||
36 |
searchedNamespace allBehaviorsDo:[:aClass | |
|
37 |
|cat| |
|
38 |
||
39 |
aClass isMeta ifFalse:[ |
|
40 |
(aClass isNamespace not |
|
41 |
or:[aClass == Namespace |
|
42 |
or:[aClass == Smalltalk]]) ifTrue:[ |
|
43 |
(allNames or:[aClass nameSpace == nameSpace]) ifTrue:[ |
|
44 |
cat := aClass category. |
|
45 |
cat isNil ifTrue:[ |
|
46 |
cat := '* no category *' |
|
47 |
]. |
|
48 |
cat ~= 'obsolete' ifTrue:[ |
|
49 |
categorySet add:cat |
|
50 |
] |
|
51 |
] |
|
52 |
] |
|
53 |
] |
|
54 |
]. |
|
55 |
categoryArray := categorySet asArray sort. |
|
56 |
]. |
|
57 |
^ categoryArray |
|
58 |
||
59 |
" |
|
60 |
(SystemOrganizer for:nil) categories |
|
61 |
(SystemOrganizer for:Smalltalk) categories |
|
62 |
(SystemOrganizer for:Demos) categories |
|
63 |
" |
|
64 |
||
65 |
"Modified: / 20.6.1998 / 12:40:42 / cg" |
|
689 | 66 |
! |
67 |
||
895
f8702324cc12
added #categoryOfElement - for RB
Claus Gittinger <cg@exept.de>
parents:
689
diff
changeset
|
68 |
categoryOfElement:aClassName |
f8702324cc12
added #categoryOfElement - for RB
Claus Gittinger <cg@exept.de>
parents:
689
diff
changeset
|
69 |
"return a classes category; |
f8702324cc12
added #categoryOfElement - for RB
Claus Gittinger <cg@exept.de>
parents:
689
diff
changeset
|
70 |
the argument is the classes name" |
f8702324cc12
added #categoryOfElement - for RB
Claus Gittinger <cg@exept.de>
parents:
689
diff
changeset
|
71 |
|
f8702324cc12
added #categoryOfElement - for RB
Claus Gittinger <cg@exept.de>
parents:
689
diff
changeset
|
72 |
|cls| |
f8702324cc12
added #categoryOfElement - for RB
Claus Gittinger <cg@exept.de>
parents:
689
diff
changeset
|
73 |
|
f8702324cc12
added #categoryOfElement - for RB
Claus Gittinger <cg@exept.de>
parents:
689
diff
changeset
|
74 |
cls := Smalltalk at:aClassName ifAbsent:nil. |
f8702324cc12
added #categoryOfElement - for RB
Claus Gittinger <cg@exept.de>
parents:
689
diff
changeset
|
75 |
cls notNil ifTrue:[^ cls category]. |
f8702324cc12
added #categoryOfElement - for RB
Claus Gittinger <cg@exept.de>
parents:
689
diff
changeset
|
76 |
self error:'no such class'. |
f8702324cc12
added #categoryOfElement - for RB
Claus Gittinger <cg@exept.de>
parents:
689
diff
changeset
|
77 |
! |
f8702324cc12
added #categoryOfElement - for RB
Claus Gittinger <cg@exept.de>
parents:
689
diff
changeset
|
78 |
|
899 | 79 |
classify:aClassName under:newCategory |
80 |
"change a classes category; |
|
81 |
the argument is the classes name" |
|
82 |
||
83 |
|cls| |
|
84 |
||
85 |
cls := Smalltalk at:aClassName ifAbsent:nil. |
|
86 |
cls notNil ifTrue:[^ cls category:newCategory]. |
|
87 |
self error:'no such class'. |
|
88 |
||
89 |
"Created: / 4.2.2000 / 18:30:11 / cg" |
|
90 |
! |
|
91 |
||
689 | 92 |
listAtCategoryNamed:aCategory |
93 |
"return a collection of classes in aCategory." |
|
94 |
||
95 |
|set classSet searchedNamespace allNames| |
|
96 |
||
97 |
classSet := IdentitySet new. |
|
98 |
||
99 |
(searchedNamespace := nameSpace) isNil ifTrue:[ |
|
100 |
allNames := true. |
|
101 |
searchedNamespace := Smalltalk. |
|
102 |
]. |
|
103 |
||
104 |
searchedNamespace allBehaviorsDo:[:aClass | |
|
105 |
|cat| |
|
106 |
||
107 |
aClass isMeta ifFalse:[ |
|
108 |
(aClass isNamespace not |
|
109 |
or:[aClass == Namespace |
|
110 |
or:[aClass == Smalltalk]]) ifTrue:[ |
|
111 |
(allNames or:[aClass nameSpace == nameSpace]) ifTrue:[ |
|
112 |
cat := aClass category. |
|
113 |
cat = aCategory ifTrue:[ |
|
114 |
classSet add:aClass name |
|
115 |
] |
|
116 |
] |
|
117 |
] |
|
118 |
] |
|
119 |
]. |
|
120 |
^ classSet asArray sort. |
|
121 |
||
122 |
" |
|
123 |
(SystemOrganizer for:nil) listAtCategoryNamed:'Collections-Abstract' |
|
124 |
(SystemOrganizer for:Smalltalk) listAtCategoryNamed:'Collections-Abstract' |
|
125 |
(SystemOrganizer for:Demos) listAtCategoryNamed:'Collections-Abstract' |
|
126 |
" |
|
127 |
||
128 |
"Modified: / 20.6.1998 / 13:34:19 / cg" |
|
688 | 129 |
! ! |
130 |
||
131 |
!SystemOrganizer methodsFor:'private access'! |
|
132 |
||
133 |
nameSpace:aNameSpace |
|
134 |
"set the nameSpace - nil is allowed and stands for: any" |
|
135 |
||
136 |
nameSpace := aNameSpace. |
|
137 |
Smalltalk addDependent:self. |
|
138 |
||
139 |
" |
|
140 |
(SystemOrganizer for:nil) organization |
|
141 |
(SystemOrganizer for:Demos) organization |
|
142 |
" |
|
143 |
||
144 |
"Modified: / 20.6.1998 / 12:35:34 / cg" |
|
145 |
! ! |
|
146 |
||
147 |
!SystemOrganizer class methodsFor:'documentation'! |
|
148 |
||
149 |
version |
|
899 | 150 |
^ '$Header: /cvs/stx/stx/libbasic3/SystemOrganizer.st,v 1.4 2000-02-05 14:28:34 cg Exp $' |
688 | 151 |
! ! |