[squeak-dev] The Trunk: Monticello-eem.786.mcz
commits at source.squeak.org
commits at source.squeak.org
Fri Jan 13 20:14:02 UTC 2023
Eliot Miranda uploaded a new version of Monticello to project The Trunk:
http://source.squeak.org/trunk/Monticello-eem.786.mcz
==================== Summary ====================
Name: Monticello-eem.786
Author: eem
Time: 13 January 2023, 12:13:59.928653 pm
UUID: 3b994383-de8a-4b74-8ea0-a356c1fb2631
Ancestors: Monticello-eem.785
Refactor MCCodeTool>>fileOutDefinition/fileOutMessage so the save dialog can exclude ignored items.
=============== Diff against Monticello-eem.785 ===============
Item was changed:
----- Method: MCCodeTool>>fileOutDefinition (in category 'menus') -----
fileOutDefinition
"Put a description of the selected definition(s) on a file.
Output the version(s) corresponding to the incoming definition(s), not the versions in this system."
| index fileName itemsToFileOut |
itemsToFileOut := (index := self selection) ~= 0
ifTrue: [{items at: index}]
+ ifFalse: [items select: [:item| self shouldIncludeInFileOut: item]].
- ifFalse: [items].
items isEmpty ifTrue:
[^self].
fileName := UIManager default
saveFilenameRequest: 'File out on which file?'
initialAnswer: (index ~= 0
ifTrue: [itemsToFileOut first summary]
ifFalse: ['definitions']).
fileName isEmptyOrNil ifTrue: [^self].
Cursor write showWhile:
[| definitionStream |
definitionStream := WriteStream on: (String new: 1000).
definitionStream header; timeStamp.
itemsToFileOut
do: [:patchOp|
(patchOp isRemoval ifTrue: [patchOp] ifFalse: [patchOp definition]) fileOutOn: definitionStream]
separatedBy: [definitionStream cr; cr].
FileStream writeSourceCodeFrom: definitionStream baseName: fileName isSt: true useHtml: false]!
Item was changed:
----- Method: MCCodeTool>>fileOutMessage (in category 'menus') -----
fileOutMessage
"Put a description of the selected definition(s) on a file.
Output the version(s) corresponding to this system, not the incoming definition."
| index fileName itemsToFileOut |
itemsToFileOut := (index := self selection) ~= 0
ifTrue: [{items at: index}]
+ ifFalse: [items select: [:item| self shouldIncludeInFileOut: item]].
- ifFalse: [items].
items isEmpty ifTrue:
[^self].
fileName := UIManager default
saveFilenameRequest: 'File out on which file?'
initialAnswer: (index ~= 0
ifTrue: [itemsToFileOut first summary]
ifFalse: ['definitions']).
fileName isEmptyOrNil ifTrue: [^self].
Cursor write showWhile:
[| definitionStream removalInitStream |
definitionStream := WriteStream on: (String new: 1000).
removalInitStream := WriteStream on: (String new: 100).
definitionStream header; timeStamp.
itemsToFileOut do:
[:patchOp| | def |
def := patchOp definition.
def isMethodDefinition ifTrue:
[(def actualClass notNil
and: [def actualClass includesSelector: def selector])
ifTrue:
[def actualClass
printMethodChunk: def selector
withPreamble: true
on: definitionStream
moveSource: false
toFile: nil.
(def selector == #initialize and: [def classIsMeta]) ifTrue:
[removalInitStream nextChunkPut: def className, ' initialize'; cr]]
ifFalse:
[removalInitStream nextChunkPut: def className, (def classIsMeta ifTrue: [' class'] ifFalse: ['']), ' removeSelector: ', def selector printString; cr]].
def isClassDefinition ifTrue:
[def actualClass
ifNotNil:
[definitionStream nextChunkPut: def actualClass definition.
def comment ifNotNil:
[def actualClass organization
putCommentOnFile: definitionStream
numbered: 1
moveSource: false
forClass: def actualClass]]
ifNil:
[removalInitStream nextChunkPut: def className, ' removeFromSystem'; cr]]].
definitionStream nextPutAll: removalInitStream contents.
FileStream writeSourceCodeFrom: definitionStream baseName: fileName isSt: true useHtml: false]!
Item was added:
+ ----- Method: MCCodeTool>>shouldIncludeInFileOut: (in category 'menus') -----
+ shouldIncludeInFileOut: item
+ "This is a hook to allow the MCSaveVersionDialog to exclude ignored items"
+ ^true!
Item was added:
+ ----- Method: MCSaveVersionDialog>>shouldIncludeInFileOut: (in category 'menus') -----
+ shouldIncludeInFileOut: item
+ ^(ignore includes: item) not!
More information about the Squeak-dev
mailing list
|