Nicolas Cellier uploaded a new version of Monticello to project The Trunk: http://source.squeak.org/trunk/Monticello-nice.547.mcz
==================== Summary ====================
Name: Monticello-nice.547 Author: nice Time: 2 June 2013, 5:25:56.867 pm UUID: e362cb35-f4c1-447b-93f7-4360eb3ba26e Ancestors: Monticello-nice.546
Encode all .mcz and .mcd text files in UTF8, not only snaphot/source.st.
=============== Diff against Monticello-nice.546 ===============
Item was changed: + ----- Method: MCMcdWriter>>writeBaseInfo: (in category 'visiting') ----- - ----- Method: MCMcdWriter>>writeBaseInfo: (in category 'as yet unclassified') ----- writeBaseInfo: aVersionInfo | string | string := self serializeVersionInfo: aVersionInfo. + self addString: string at: 'base' encodedTo: 'utf8'. - self addString: string at: 'base'. !
Item was changed: + ----- Method: MCMcdWriter>>writeDefinitions: (in category 'visiting') ----- - ----- Method: MCMcdWriter>>writeDefinitions: (in category 'as yet unclassified') ----- writeDefinitions: aVersion self writeBaseInfo: aVersion baseInfo. self writePatch: aVersion patch.!
Item was changed: + ----- Method: MCMcdWriter>>writeNewDefinitions: (in category 'visiting') ----- - ----- Method: MCMcdWriter>>writeNewDefinitions: (in category 'as yet unclassified') ----- writeNewDefinitions: aCollection + self addString: (self serializeDefinitions: aCollection) at: 'new/source.', self snapshotWriterClass extension encodedTo: 'utf8'.! - self addString: (self serializeDefinitions: aCollection) at: 'new/source.', self snapshotWriterClass extension.!
Item was changed: + ----- Method: MCMcdWriter>>writeOldDefinitions: (in category 'visiting') ----- - ----- Method: MCMcdWriter>>writeOldDefinitions: (in category 'as yet unclassified') ----- writeOldDefinitions: aCollection + self addString: (self serializeDefinitions: aCollection) at: 'old/source.', self snapshotWriterClass extension encodedTo: 'utf8'.! - self addString: (self serializeDefinitions: aCollection) at: 'old/source.', self snapshotWriterClass extension.!
Item was changed: + ----- Method: MCMcdWriter>>writePatch: (in category 'visiting') ----- - ----- Method: MCMcdWriter>>writePatch: (in category 'as yet unclassified') ----- writePatch: aPatch | old new | old := OrderedCollection new. new := OrderedCollection new. aPatch operations do: [:ea | ea isRemoval ifTrue: [old add: ea definition]. ea isAddition ifTrue: [new add: ea definition]. ea isModification ifTrue: [old add: ea baseDefinition. new add: ea definition]]. self writeOldDefinitions: old. self writeNewDefinitions: new. self addString: (self serializeInBinary: aPatch) at: 'patch.bin'.!
Item was added: + ----- Method: MCMczReader>>contentsForMember: (in category 'private') ----- + contentsForMember: member + ^[(member contentStreamFromEncoding: 'utf8') text contents] on: InvalidUTF8 + do: [:exc | + "Case of legacy encoding, presumably it is latin-1. + But if contents starts with a null character, it might be a case of WideString encoded in UTF-32BE" + | str | + str := (member contentStreamFromEncoding: 'latin1') text. + exc return: ((str peek = Character null and: [ str size \ 4 = 0 ]) + ifTrue: [WideString fromByteArray: str contents asByteArray] + ifFalse: [str contents])]!
Item was changed: ----- Method: MCMczReader>>extractDefinitionsFrom: (in category 'as yet unclassified') ----- extractDefinitionsFrom: member | reader | (MCSnapshotReader readerClassForFileNamed: member fileName) + ifNotNil: [:rc | + reader := rc on: (self contentsForMember: member) readStream. + definitions addAll: reader definitions] - ifNotNil: [:rc | reader := rc on: member contentStream text. - definitions addAll: reader definitions] !
Item was changed: ----- Method: MCMczReader>>extractDependencyFrom: (in category 'as yet unclassified') ----- extractDependencyFrom: zipMember ^ MCVersionDependency package: (MCPackage named: (zipMember fileName copyAfterLast: $/)) + info: (self extractInfoFrom: (self parseMember: zipMember))! - info: (self extractInfoFrom: (self parseMember: zipMember fileName))!
Item was changed: + ----- Method: MCMczReader>>loadDefinitions (in category 'loading') ----- - ----- Method: MCMczReader>>loadDefinitions (in category 'as yet unclassified') ----- loadDefinitions definitions := OrderedCollection new. (self zip memberNamed: 'snapshot.bin') ifNotNil: [:m | [^ definitions := (DataStream on: m contentStream) next definitions] on: Error do: [:fallThrough ]]. "otherwise" (self zip membersMatching: 'snapshot/*') do: [:m | self extractDefinitionsFrom: m]. !
Item was changed: + ----- Method: MCMczReader>>loadDependencies (in category 'loading') ----- - ----- Method: MCMczReader>>loadDependencies (in category 'as yet unclassified') ----- loadDependencies dependencies := (self zip membersMatching: 'dependencies/*') collect: [:m | self extractDependencyFrom: m]. dependencies := dependencies asArray. !
Item was changed: + ----- Method: MCMczReader>>loadPackage (in category 'loading') ----- - ----- Method: MCMczReader>>loadPackage (in category 'as yet unclassified') ----- loadPackage | dict | dict := self parseMember: 'package'. package := MCPackage named: (dict at: #name)!
Item was changed: + ----- Method: MCMczReader>>loadVersionInfo (in category 'loading') ----- - ----- Method: MCMczReader>>loadVersionInfo (in category 'as yet unclassified') ----- loadVersionInfo info := self extractInfoFrom: (self parseMember: 'version')!
Item was changed: ----- Method: MCMczReader>>parseMember: (in category 'as yet unclassified') ----- + parseMember: memberOrName + | member contents tokens | + member := self zip member: memberOrName. + contents := self contentsForMember: member. + tokens := (self scanner scanTokens: contents) first. - parseMember: fileName - | tokens | - tokens := (self scanner scanTokens: (self zip contentsOf: fileName)) first. ^ self associate: tokens!
Item was added: + ----- Method: MCMczWriter>>addString:at:encodedTo: (in category 'writing') ----- + addString: string at: path encodedTo: encodingName + | member | + member := zip addString: (string convertToEncoding: encodingName) as: path. + member desiredCompressionMethod: ZipArchive compressionDeflated + !
Item was changed: ----- Method: MCMczWriter>>serializeDefinitions: (in category 'serializing') ----- serializeDefinitions: aCollection + ^String streamContents: [:aStream | - ^(String streamContents: [:aStream | | writer | writer := self snapshotWriterClass on: aStream. + writer writeDefinitions: aCollection]! - writer writeDefinitions: aCollection]) - squeakToUtf8!
Item was changed: ----- Method: MCMczWriter>>writePackage: (in category 'visiting') ----- writePackage: aPackage + self addString: (self serializePackage: aPackage) at: 'package' encodedTo: 'utf8'! - self addString: (self serializePackage: aPackage) at: 'package'!
Item was changed: ----- Method: MCMczWriter>>writeSnapshot: (in category 'visiting') ----- writeSnapshot: aSnapshot + self addString: (self serializeDefinitions: aSnapshot definitions) at: 'snapshot/source.', self snapshotWriterClass extension encodedTo: 'utf8'. - self addString: (self serializeDefinitions: aSnapshot definitions) at: 'snapshot/source.', self snapshotWriterClass extension. self addString: (self serializeInBinary: aSnapshot) at: 'snapshot.bin'!
Item was changed: ----- Method: MCMczWriter>>writeVersionDependency: (in category 'visiting') ----- writeVersionDependency: aVersionDependency | string | string := (self serializeVersionInfo: aVersionDependency versionInfo). + self addString: string at: 'dependencies/', aVersionDependency package name encodedTo: 'utf8'! - self addString: string at: 'dependencies/', aVersionDependency package name!
Item was changed: ----- Method: MCMczWriter>>writeVersionInfo: (in category 'visiting') ----- writeVersionInfo: aVersionInfo | string | string := self serializeVersionInfo: aVersionInfo. + self addString: string at: 'version' encodedTo: 'utf8'. - self addString: string at: 'version'. !
Item was changed: ----- Method: MCStReader>>readStream (in category 'evaluating') ----- readStream - | contents | - contents := stream contents. - contents := [contents utf8ToSqueak] on: InvalidUTF8 do: [:exc | - "Case of legacy encoding, presumably it is latin-1 and we do not need to do anything - But if contents starts with a null character, it might be a case of WideString encoded in UTF-32BE" - exc return: (((contents beginsWith: Character null asString) and: [ contents size \ 4 = 0 ]) - ifTrue: [WideString fromByteArray: contents asByteArray] - ifFalse: [contents])]. ^ ('!!!!
+ ', stream contents) readStream! - ', contents) readStream!
Item was changed: + ----- Method: MCWriter>>stream (in category 'accessing') ----- - ----- Method: MCWriter>>stream (in category 'as yet unclassified') ----- stream ^ stream!
Item was changed: + ----- Method: MCWriter>>stream: (in category 'accessing') ----- - ----- Method: MCWriter>>stream: (in category 'as yet unclassified') ----- stream: aStream stream := aStream!
squeak-dev@lists.squeakfoundation.org