43 notice := aString. |
43 notice := aString. |
44 |
44 |
45 "Modified (comment): / 17-09-2012 / 17:19:03 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
45 "Modified (comment): / 17-09-2012 / 17:19:03 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
46 ! ! |
46 ! ! |
47 |
47 |
48 !CypressAbstractWriter methodsFor:'accessing-filenames'! |
|
49 |
|
50 directoryNameForClass: cclass |
|
51 ^((cclass name copyReplaceAll: $: with: $_) , '.', self suffixForClass). |
|
52 |
|
53 "Created: / 17-09-2012 / 18:11:39 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
54 ! |
|
55 |
|
56 directoryNameForExtensions: classname |
|
57 ^((classname copyReplaceAll: $: with: $_) , '.', self suffixForExtensions). |
|
58 |
|
59 "Created: / 17-09-2012 / 18:27:51 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
60 ! |
|
61 |
|
62 directoryNameForPackage: aCypressPackage |
|
63 |
|
64 ^(aCypressPackage name copy |
|
65 replaceAll:$: with: $_; |
|
66 replaceAll:$/ with: $_; |
|
67 yourself) , '.' , self suffixForPackage |
|
68 |
|
69 "Created: / 17-09-2012 / 17:32:49 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
70 ! |
|
71 |
|
72 fileNameForComment |
|
73 ^repository properties at:'commentFile' ifAbsent:['README.md'] |
|
74 |
|
75 "Created: / 17-09-2012 / 18:07:25 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
76 ! |
|
77 |
|
78 fileNameForMethod: cmethod |
|
79 ^Dictionary new |
|
80 at: $/ put: '__quo__'; |
|
81 "/Add more..." |
|
82 |
|
83 at: cmethod selector ifAbsent:[ |
|
84 ((cmethod selector copyReplaceAll:$: with: $.) , '.st') |
|
85 ] |
|
86 |
|
87 "Created: / 17-09-2012 / 18:22:07 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
88 ! |
|
89 |
|
90 filenameNameForProperties |
|
91 ^'properties.ston' |
|
92 |
|
93 "Created: / 17-09-2012 / 17:38:39 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
94 ! |
|
95 |
|
96 suffixForClass |
|
97 ^'class' |
|
98 |
|
99 "Created: / 17-09-2012 / 18:09:33 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
100 ! |
|
101 |
|
102 suffixForExtensions |
|
103 ^'extension' |
|
104 |
|
105 "Created: / 17-09-2012 / 18:09:51 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
106 ! |
|
107 |
|
108 suffixForPackage |
|
109 ^'package' |
|
110 |
|
111 "Created: / 17-09-2012 / 18:09:39 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
112 ! ! |
|
113 |
|
114 !CypressAbstractWriter methodsFor:'writing-model'! |
48 !CypressAbstractWriter methodsFor:'writing-model'! |
115 |
49 |
116 writeClass: cclass as: name to: directory |
50 writeClass: cclass as: name to: directory |
117 "Writes a given 'cclass' into directory named 'name' under |
51 "Writes a given 'cclass' into directory named 'name' under |
118 'directory'" |
52 'directory'" |
120 self subclassResponsibility |
54 self subclassResponsibility |
121 |
55 |
122 "Created: / 17-09-2012 / 22:19:43 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
56 "Created: / 17-09-2012 / 22:19:43 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
123 ! |
57 ! |
124 |
58 |
125 writeClass: cclass to: directory |
|
126 |
|
127 self writeClass: cclass |
|
128 as: (self directoryNameForClass: cclass) |
|
129 to: directory |
|
130 |
|
131 "Created: / 17-09-2012 / 18:40:53 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
132 ! |
|
133 |
|
134 writeMethod: cmethod as: name to: directory |
59 writeMethod: cmethod as: name to: directory |
135 "Writes a given 'cmethod' into directory named 'name' under |
60 "Writes a given 'cmethod' into directory named 'name' under |
136 'directory'" |
61 'directory'" |
137 |
62 |
138 self subclassResponsibility |
63 self subclassResponsibility |
139 |
64 |
140 "Created: / 17-09-2012 / 22:20:04 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
65 "Created: / 17-09-2012 / 22:20:04 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
141 ! |
66 ! |
142 |
67 |
143 writeMethod: cmethod to: directory |
|
144 |
|
145 self writeMethod: cmethod |
|
146 as: (self fileNameForMethod: cmethod) |
|
147 to: directory |
|
148 |
|
149 "Created: / 17-09-2012 / 18:40:56 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
150 ! |
|
151 |
|
152 writePackage: cpackage as: name to: directory |
68 writePackage: cpackage as: name to: directory |
153 "Writes a given 'cpackage' into directory named 'name' under |
69 "Writes a given 'cpackage' into directory named 'name' under |
154 'directory'" |
70 'directory'" |
155 |
71 |
156 self subclassResponsibility |
72 self subclassResponsibility |
157 |
73 |
158 "Created: / 17-09-2012 / 22:15:50 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
74 "Created: / 17-09-2012 / 22:15:50 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
159 ! |
|
160 |
|
161 writePackage: cpackage to: directory |
|
162 |
|
163 self writePackage: cpackage |
|
164 as: (self directoryNameForPackage: cpackage) |
|
165 to: directory |
|
166 |
|
167 "Created: / 17-09-2012 / 17:34:49 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
168 ! ! |
75 ! ! |
169 |
76 |
170 !CypressAbstractWriter methodsFor:'writing-utils'! |
77 !CypressAbstractWriter methodsFor:'writing-utils'! |
|
78 |
|
79 writeClass: cclass to: directory |
|
80 |
|
81 self writeClass: cclass |
|
82 as: (self defaultFileNameForClassNamed:cclass name) |
|
83 to: directory |
|
84 |
|
85 "Created: / 17-09-2012 / 18:40:53 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
86 ! |
171 |
87 |
172 writeClasses: classes to: directory |
88 writeClasses: classes to: directory |
173 "Writes my classes into 'directory' with given copyrightNotice" |
89 "Writes my classes into 'directory' with given copyrightNotice" |
174 |
90 |
175 | obsolete | |
91 | obsolete | |
177 " collect possibly obsolete .class directories " |
93 " collect possibly obsolete .class directories " |
178 obsolete := Set new. |
94 obsolete := Set new. |
179 directory directoryContentsAsFilenamesDo:[:each| |
95 directory directoryContentsAsFilenamesDo:[:each| |
180 | suffix | |
96 | suffix | |
181 |
97 |
182 each suffix = self suffixForClass ifTrue:[ |
98 each suffix = self defaultFileSuffixForClass ifTrue:[ |
183 obsolete add: each. |
99 obsolete add: each. |
184 ] |
100 ] |
185 ]. |
101 ]. |
186 |
102 |
187 " write classes... " |
103 " write classes... " |
188 classes do:[:cclass| |
104 classes do:[:cclass| |
189 | cpsClsDir name | |
105 | cpsClsDir name | |
190 |
106 |
191 cpsClsDir := directory / (name := self directoryNameForClass: cclass). |
107 cpsClsDir := directory / (name := self defaultFileNameForClassNamed:cclass name). |
192 obsolete remove:cpsClsDir ifAbsent:[]. |
108 obsolete remove:cpsClsDir ifAbsent:[]. |
193 self writeClass: cclass as: name to: directory |
109 self writeClass: cclass as: name to: directory |
194 ]. |
110 ]. |
195 |
111 |
196 " wipe out obsolete .class directories " |
112 " wipe out obsolete .class directories " |
202 ! |
118 ! |
203 |
119 |
204 writeComment: comment to: directory |
120 writeComment: comment to: directory |
205 comment isNil ifTrue:[ ^ self ]. |
121 comment isNil ifTrue:[ ^ self ]. |
206 |
122 |
207 (directory / (self fileNameForComment)) writingFileDo:[:f| |
123 (directory / self defaultFileNameForComment) writingFileDo:[:f| |
208 f nextPutAll: comment |
124 f nextPutAll: comment |
209 ] |
125 ] |
210 |
126 |
211 "Created: / 17-09-2012 / 17:47:59 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
127 "Created: / 17-09-2012 / 17:47:59 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
212 ! |
128 ! |
235 |
151 |
236 " write individual extensions... " |
152 " write individual extensions... " |
237 extensionsPerClass keysAndValuesDo:[:name :cpsMthds | |
153 extensionsPerClass keysAndValuesDo:[:name :cpsMthds | |
238 | cpsClsDir cpsCls | |
154 | cpsClsDir cpsCls | |
239 |
155 |
240 cpsClsDir := directory / (self directoryNameForExtensions: name). |
156 cpsClsDir := directory / (self defaultFileNameForClassExtensionsNamed:name). |
241 obsolete remove: cpsClsDir ifAbsent:[]. |
157 obsolete remove: cpsClsDir ifAbsent:[]. |
242 cpsClsDir exists ifFalse: [ cpsClsDir makeDirectory ]. |
158 cpsClsDir exists ifFalse: [ cpsClsDir makeDirectory ]. |
243 |
159 |
244 self writeMethods: cpsMthds to: cpsClsDir. |
160 self writeMethods: cpsMthds to: cpsClsDir. |
245 ]. |
161 ]. |
248 obsolete do:[:each| |
164 obsolete do:[:each| |
249 each recursiveRemove. |
165 each recursiveRemove. |
250 ]. |
166 ]. |
251 |
167 |
252 "Created: / 17-09-2012 / 18:29:29 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
168 "Created: / 17-09-2012 / 18:29:29 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
169 ! |
|
170 |
|
171 writeMethod: cmethod to: directory |
|
172 |
|
173 self writeMethod: cmethod |
|
174 as: (self defaultFileNameForMethodNamed:cmethod selector) |
|
175 to: directory |
|
176 |
|
177 "Created: / 17-09-2012 / 18:40:56 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
253 ! |
178 ! |
254 |
179 |
255 writeMethods: methods to:directory |
180 writeMethods: methods to:directory |
256 "Writes methods into given 'directory' with copyrightNotice in each file" |
181 "Writes methods into given 'directory' with copyrightNotice in each file" |
257 |
182 |
274 methods do:[:cpsMthd| |
199 methods do:[:cpsMthd| |
275 | dir dottedSel file baseNameWithoutSuffix name| |
200 | dir dottedSel file baseNameWithoutSuffix name| |
276 |
201 |
277 dir := cpsMthd meta ifTrue:[classDir] ifFalse:[instDir]. |
202 dir := cpsMthd meta ifTrue:[classDir] ifFalse:[instDir]. |
278 dir exists ifFalse:[ dir makeDirectory ]. |
203 dir exists ifFalse:[ dir makeDirectory ]. |
279 file := dir / (name := self fileNameForMethod: cpsMthd). |
204 file := dir / (name := self defaultFileNameForMethodNamed:cpsMthd selector). |
280 baseNameWithoutSuffix := file withoutSuffix baseName. |
205 baseNameWithoutSuffix := file withoutSuffix baseName. |
281 self writeMethod: cpsMthd as: name to: dir. |
206 self writeMethod: cpsMthd as: name to: dir. |
282 obsolete := obsolete reject:[:each| |
207 obsolete := obsolete reject:[:each| |
283 each withoutSuffix baseName = baseNameWithoutSuffix |
208 each withoutSuffix baseName = baseNameWithoutSuffix |
284 ]. |
209 ]. |
290 ]. |
215 ]. |
291 |
216 |
292 "Created: / 17-09-2012 / 18:29:57 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
217 "Created: / 17-09-2012 / 18:29:57 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
293 ! |
218 ! |
294 |
219 |
|
220 writePackage: cpackage to: directory |
|
221 |
|
222 self writePackage: cpackage |
|
223 as: (self defaultFileNameForClassPackageNamed:cpackage) |
|
224 to: directory |
|
225 |
|
226 "Created: / 17-09-2012 / 17:34:49 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
227 ! |
|
228 |
295 writeProperties: properties to: directory |
229 writeProperties: properties to: directory |
296 | props propertyFile | |
230 | props propertyFile | |
297 |
231 |
298 props := properties copy. |
232 props := properties copy. |
299 props isEmptyOrNil ifTrue:[ ^ self ]. |
233 props isEmptyOrNil ifTrue:[ ^ self ]. |
300 propertyFile := directory / self filenameNameForProperties. |
234 propertyFile := directory / self defaultFileNameForProperties. |
301 |
235 |
302 " add notice " |
236 " add notice " |
303 props at: '_cypress_copyright' put: notice. |
237 props at: '_cypress_copyright' put: notice. |
304 |
238 |
305 " be nice and do not discard properties of others. Merge them" |
239 " be nice and do not discard properties of others. Merge them" |