[squeak-dev] The Trunk: Compression-fbs.37.mcz

Chris Muller asqueaker at gmail.com
Wed Jul 17 15:01:37 UTC 2013


So you want to have a bunch of 3-method micro-packages like Pharo, so
that when you open Monticello and see 257 packages and also it's a
pain in the ass to define configuration scripts because of this?

On Wed, Jul 17, 2013 at 3:53 AM,  <commits at source.squeak.org> wrote:
> Frank Shearar uploaded a new version of Compression to project The Trunk:
> http://source.squeak.org/trunk/Compression-fbs.37.mcz
>
> ==================== Summary ====================
>
> Name: Compression-fbs.37
> Author: fbs
> Time: 17 July 2013, 8:50:07.538 am
> UUID: 77da886a-a70a-d242-8442-826c9cd67dad
> Ancestors: Compression-fbs.36
>
> Recategorise extension methods into either -Archives or -Streams subcategories.
>
> =============== Diff against Compression-fbs.36 ===============
>
> Item was changed:
> + ----- Method: CompiledMethodTrailer>>decodeEmbeddedSourceZip (in category '*Compression-Streams') -----
> - ----- Method: CompiledMethodTrailer>>decodeEmbeddedSourceZip (in category '*Compression-KernelExtensions') -----
>   decodeEmbeddedSourceZip
>
>         "data is string with method's source code, compressed using zip compression"
>         self decodeZip.!
>
> Item was changed:
> + ----- Method: CompiledMethodTrailer>>decodeTempsNamesZip (in category '*Compression-Streams') -----
> - ----- Method: CompiledMethodTrailer>>decodeTempsNamesZip (in category '*Compression-KernelExtensions') -----
>   decodeTempsNamesZip
>
>         "data is string with method's temporary names, compressed using zip compression"
>         self decodeZip.!
>
> Item was changed:
> + ----- Method: CompiledMethodTrailer>>decodeZip (in category '*Compression-Streams') -----
> - ----- Method: CompiledMethodTrailer>>decodeZip (in category '*Compression-KernelExtensions') -----
>   decodeZip
>
>         "data := <trailer> unzip utf8ToSqueak"
>         | len bytes |
>         len := self decodeLengthField.
>         bytes := ByteArray new: len.
>         1 to: len do: [ :i |
>                 bytes at: i put: (method at: method size - size + i) ].
>
>         data := (ZipReadStream on: bytes) contents asString convertFromEncoding: 'utf8'!
>
> Item was changed:
> + ----- Method: CompiledMethodTrailer>>encodeEmbeddedSourceZip (in category '*Compression-Streams') -----
> - ----- Method: CompiledMethodTrailer>>encodeEmbeddedSourceZip (in category '*Compression-KernelExtensions') -----
>   encodeEmbeddedSourceZip
>
>         "data is string with method's source code, encode it using Zip compression method"
>         self encodeUsingZip
>   !
>
> Item was changed:
> + ----- Method: CompiledMethodTrailer>>encodeTempsNamesZip (in category '*Compression-Streams') -----
> - ----- Method: CompiledMethodTrailer>>encodeTempsNamesZip (in category '*Compression-KernelExtensions') -----
>   encodeTempsNamesZip
>
>         "data is string with method's temporary names, encode it using zip compression"
>         self encodeUsingZip
>
>         "data is string with method's source code, encoded using qCompress method"
>
>
>   !
>
> Item was changed:
> + ----- Method: CompiledMethodTrailer>>encodeUsingZip (in category '*Compression-Streams') -----
> - ----- Method: CompiledMethodTrailer>>encodeUsingZip (in category '*Compression-KernelExtensions') -----
>   encodeUsingZip
>
>         "data is string, encode it using gzip compression"
>         | utf8str stream length encodedLength |
>
>         self assert: (data isString).
>         utf8str := data convertToEncoding: 'utf8'.
>
>         stream := ((ZipWriteStream on: (ByteArray new: utf8str size))
>                 nextPutAll: utf8str asByteArray;
>                 close;
>                 encodedStream).
>
>         length := stream position.
>         encodedLength := self encodeLengthField: length.
>
>         stream nextPutAll: encodedLength.
>         "trailing byte"
>         stream nextPut: (self kindAsByte + encodedLength size - 1).
>
>         encodedData := stream contents
>         !
>
> Item was changed:
> + ----- Method: FileStream>>viewGZipContents (in category '*Compression-Streams') -----
> - ----- Method: FileStream>>viewGZipContents (in category '*Compression') -----
>   viewGZipContents
>         "View the contents of a gzipped file"
>
>         | stringContents |
>         self binary.
>         stringContents := self contentsOfEntireFile.
>         stringContents := (GZipReadStream on: stringContents) upToEnd.
>         ^ stringContents asString withSqueakLineEndings.!
>
> Item was changed:
> + ----- Method: PositionableStream>>asZLibReadStream (in category '*Compression-Archives') -----
> - ----- Method: PositionableStream>>asZLibReadStream (in category '*Compression') -----
>   asZLibReadStream
>         ^ZLibReadStream on: collection from: position+1 to: readLimit!
>
> Item was changed:
> + ----- Method: ReadWriteStream>>asUnZippedStream (in category '*Compression-Streams') -----
> - ----- Method: ReadWriteStream>>asUnZippedStream (in category '*Compression') -----
>   asUnZippedStream
>         | isGZip outputStream first strm archive which |
>         "Decompress this file if needed, and return a stream.  No file is written.  File extension may be .gz or anything else.  Also works on archives (.zip, .gZip)."
>
>         strm := self binary.
>         strm isZipArchive ifTrue: [
>                 archive := ZipArchive new readFrom: strm.
>                 which := archive members detect: [:any | any fileName asLowercase endsWith: '.ttf']
>                                                                 ifNone: [nil].
>                 which ifNil: [archive close.
>                                         ^ self error: 'Can''t find .ttf file in archive'].
>                 strm := which contentStream.
>                 archive close].
>
>         first := strm next.
>         isGZip := (strm next * 256 + first) = (GZipConstants gzipMagic).
>         strm skip: -2.
>         isGZip
>                 ifTrue: [outputStream := (MultiByteBinaryOrTextStream with:
>                                                                         (GZipReadStream on: strm) upToEnd) reset.
>                                 strm close]
>                 ifFalse: [outputStream := strm].
>         ^ outputStream!
>
> Item was changed:
> + ----- Method: ReadWriteStream>>isZipArchive (in category '*Compression-Archives') -----
> - ----- Method: ReadWriteStream>>isZipArchive (in category '*Compression') -----
>   isZipArchive
>         "Determine if this appears to be a valid Zip archive"
>         | sig |
>         self binary.
>         sig := self next: 4.
>         self position: self position - 4. "rewind"
>         ^ZipArchive validSignatures includes: sig!
>
> Item was changed:
> + ----- Method: StandardFileStream>>compressFile (in category '*Compression-Streams') -----
> - ----- Method: StandardFileStream>>compressFile (in category '*Compression') -----
>   compressFile
>         "Write a new file that has the data in me compressed in GZip format."
>         | zipped buffer |
>
>         self readOnly; binary.
>         zipped := self directory newFileNamed: (self name, FileDirectory dot, 'gz').
>         zipped binary; setFileTypeToObject.
>                 "Type and Creator not to be text, so can be enclosed in an email"
>         zipped := GZipWriteStream on: zipped.
>         buffer := ByteArray new: 50000.
>         'Compressing ', self fullName
>                 displayProgressFrom: 0 to: self size
>                 during: [:bar |
>                         [self atEnd] whileFalse: [
>                                 bar value: self position.
>                                 zipped nextPutAll: (self nextInto: buffer)].
>                         zipped close.
>                         self close].
>         ^zipped!
>
> Item was changed:
> + ----- Method: String>>unzipped (in category '*Compression-Streams') -----
> - ----- Method: String>>unzipped (in category '*Compression') -----
>   unzipped
>         | magic1 magic2 |
>         magic1 := (self at: 1) asInteger.
>         magic2 := (self at: 2) asInteger.
>         (magic1 = 16r1F and:[magic2 = 16r8B]) ifFalse:[^self].
>         ^(GZipReadStream on: self) upToEnd!
>
> Item was changed:
> + ----- Method: String>>zipped (in category '*Compression-Streams') -----
> - ----- Method: String>>zipped (in category '*Compression') -----
>   zipped
>         | stream gzstream |
>
>         stream := RWBinaryOrTextStream on: String new.
>
>         gzstream := GZipWriteStream on: stream.
>         gzstream nextPutAll: self.
>         gzstream close.
>         stream reset.
>
>         ^ stream contents.
>   !
>
>


More information about the Squeak-dev mailing list