[squeak-dev] The Inbox: System-pre.1067.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Jun 11 14:56:00 UTC 2019

Patrick Rein uploaded a new version of System to project The Inbox:

==================== Summary ====================

Name: System-pre.1067
Author: pre
Time: 11 June 2019, 4:55:47.644016 pm
UUID: c33f640c-7adc-5844-97dc-4d679c4c980b
Ancestors: System-fn.1066

Refactors the change set fileout protocol to remove some code duplication. This change would entail further removal of code duplication in ReadWriteStream added through an Etoys method.

=============== Diff against System-fn.1066 ===============

Item was changed:
  ----- Method: ChangeSet>>buildMessageForMailOutWithUser: (in category 'fileIn/Out') -----
  buildMessageForMailOutWithUser: userName
  	| message compressBuffer compressStream data compressedStream compressTarget |
  	"prepare the message"
  	message := MailMessage empty.
  	message setField: 'from' toString: userName.
  	message setField: 'to' toString: 'squeak-dev at lists.squeakfoundation.org'.
  	message setField: 'subject' toString: (self chooseSubjectPrefixForEmail, name). 
  	message body: (MIMEDocument contentType: 'text/plain' content: (String streamContents: [ :str |
  		str nextPutAll: 'from preamble:'; cr; cr.
  		self fileOutPreambleOn: str ])).
  	"Prepare the gzipped data"
  	data := WriteStream on: String new.
+ 	self fileOutFullOn: data.
- 	data header; timeStamp.
- 	self fileOutPreambleOn: data.
- 	self fileOutOn: data.
- 	self fileOutPostscriptOn: data.
- 	data trailer.
  	data := ReadStream on: data contents.
  	compressBuffer := ByteArray new: 1000.
  	compressStream := GZipWriteStream on: (compressTarget := WriteStream on: (ByteArray new: 1000)).
  	[data atEnd]
  		whileFalse: [compressStream nextPutAll: (data nextInto: compressBuffer)].
  	compressStream close.
  	compressedStream := ReadStream on: compressTarget contents asString.
  	message addAttachmentFrom: compressedStream withName: (name, '.cs.gz').
  	^ message!

Item was changed:
  ----- Method: ChangeSet>>fileOut (in category 'fileIn/Out') -----
  	"File out the receiver, to a file whose name is a function of the  
  	change-set name and either of the date & time or chosen to have a  
  	unique numeric tag, depending on the preference  
  	| slips nameToUse |
  	self checkForConversionMethods.
  	ChangeSet promptForDefaultChangeSetDirectoryIfNecessary.
  	nameToUse := Preferences changeSetVersionNumbers
  				ifTrue: [self defaultChangeSetDirectory nextNameFor: self name extension: FileStream cs]
  				ifFalse: [self name , FileDirectory dot , Utilities dateTimeSuffix, FileDirectory dot , FileStream cs].
  	Cursor write showWhile: [ | internalStream |
  			internalStream := WriteStream on: (String new: 10000).
+ 			self fileOutFullOn: internalStream.
- 			internalStream header; timeStamp.
- 			self fileOutPreambleOn: internalStream.
- 			self fileOutOn: internalStream.
- 			self fileOutPostscriptOn: internalStream.
- 			internalStream trailer.
  			FileStream writeSourceCodeFrom: internalStream baseName: (nameToUse copyFrom: 1 to: nameToUse size - 3) isSt: false useHtml: false.
  	Preferences checkForSlips
  		ifFalse: [^ self].
  	slips := self checkForSlips.
  	(slips size > 0
  			and: [UIManager default confirm: 'Changeset was filed out. Still, methods in this fileOut have halts\or references to the Transcript or other ''slips'' in them.\Would you like to browse them?' withCRs
  				title: 'Browse Slips?']) 
  		ifTrue: [self systemNavigation browseMessageList: slips name: 'Possible slips in ' , name]!

Item was added:
+ ----- Method: ChangeSet>>fileOutFullOn: (in category 'private') -----
+ fileOutFullOn: aStream
+ 	aStream header; timeStamp.
+ 	self fileOutMainPartOn: aStream.
+ 	aStream trailer.!

Item was added:
+ ----- Method: ChangeSet>>fileOutMainPartOn: (in category 'private') -----
+ fileOutMainPartOn: aStream
+ 	self
+ 		fileOutPreambleOn: aStream;
+ 		fileOutOn: aStream;
+ 		fileOutPostscriptOn: aStream.!

Item was changed:
  ----- Method: WriteStream>>fileOutChangeSet:andObject: (in category '*System-Object Storage-fileIn/Out') -----
  fileOutChangeSet: aChangeSetOrNil andObject: theObject
  	"Write a file that has both the source code for the named class and an object as bits.  Any instance-specific object will get its class written automatically."
  	"An experimental version to fileout a changeSet first so that a project can contain its own classes"
  	self setFileTypeToObject.
  		"Type and Creator not to be text, so can attach correctly to an email msg"
  	self header; timeStamp.
  	aChangeSetOrNil ifNotNil: [
+ 		aChangeSetOrNil fileOutMainPartOn: self.
- 		aChangeSetOrNil fileOutPreambleOn: self.
- 		aChangeSetOrNil fileOutOn: self.
- 		aChangeSetOrNil fileOutPostscriptOn: self.
  	self trailer.	"Does nothing for normal files.  HTML streams will have trouble with object data"
  	"Append the object's raw data"
  	(SmartRefStream on: self)
  		nextPut: theObject;  "and all subobjects"
  		close.		"also closes me"

More information about the Squeak-dev mailing list