[squeak-dev] Namespaces, Packages: Image available for download, screencast.

Edgar J. De Cleene edgardec2001 at yahoo.com.ar
Sun Jul 27 11:18:44 UTC 2008




El 7/26/08 11:33 PM, "Michael van der Gulik" <mikevdg at gmail.com> escribió:

> Code should be a bunch of objects in images that can be passed, as objects, to
> other images. Computers should have persistent object stores, not
> filesystems!lopp is a well-developed squeak-based image app

+ 1.

Sure you have your own , but just in case here is the attached small
utilities for save  and read objects and gz compressed objects.

I using .obj and .obz more and more

Edgar

-------------- next part --------------
'From SqueakLight|II of 31 May 2008 [latest update: #7198] on 27 July 2008 at 8:13:54 am'!

!Object methodsFor: 'evaluating' stamp: 'edc 7/18/2005 10:51'!
ancestors
|  nonMetaClass  classList |

	nonMetaClass := self theNonMetaClass.
	
	
	classList := OrderedCollection new.
	
	nonMetaClass allSuperclasses reverseDo: 
		[:aClass | 
		classList add: aClass name.
		].
	^ classList! !

!Object methodsFor: 'evaluating' stamp: 'edc 7/18/2005 10:51'!
othersClassList
|classList metodosSospechosos |
 classList := Set new.
metodosSospechosos := self  methodDict .
metodosSospechosos isEmpty
		ifFalse: [metodosSospechosos
				collect: [:cm | cm literals
						select: [:any | any isVariableBinding]
						thenCollect: [:each | (Smalltalk at: each key ifAbsent:[])
								ifNotNil: [  classList add: each key]]]].
					
metodosSospechosos := self class methodDict .
metodosSospechosos isEmpty
		ifFalse: [metodosSospechosos
				collect: [:cm | cm literals
						select: [:any | any isVariableBinding]
						thenCollect: [:each | (Smalltalk at: each key ifAbsent:[])
								ifNotNil: [classList add: each key]]]].
					classList remove: self name  ifAbsent: [].
					^classList
					! !

!Object methodsFor: 'objects from disk' stamp: 'edc 7/10/2008 07:17'!
fileOutCompressed

| unzipped zipped buffer aFileName |
aFileName := self class name asFileName.	"do better?"
	aFileName := UIManager default 
				request: 'File name?' translated initialAnswer: aFileName.
	aFileName size == 0 ifTrue: [^ Beeper beep].
Cursor write
showWhile: [unzipped := RWBinaryOrTextStream on: ''.
unzipped fileOutClass: nil andObject: self.
unzipped reset.
zipped := FileDirectory default newFileNamed: aFileName , FileDirectory dot , ImageSegment compressedFileExtension.
zipped binary.
zipped := GZipWriteStream on: zipped.
buffer := ByteArray new: 50000.
'Compressing ' , self name
displayProgressAt: Sensor cursorPoint
from: 0
to: unzipped size
during: [:bar | 
[unzipped atEnd]
whileFalse: [bar value: unzipped position.
zipped
nextPutAll: (unzipped nextInto: buffer)].
zipped close.
unzipped close]]! !


!Object class methodsFor: 'objects from disk' stamp: 'edc 7/27/2008 07:33'!
readAndInspect: inputStream 
	inputStream setConverterForCode.
	inputStream fileInObjectAndCodeForProject inspect! !

!Object class methodsFor: 'objects from disk' stamp: 'edc 7/27/2008 08:11'!
readCompressedObject: aFileStream 
	
	self readAndInspect: (MultiByteBinaryOrTextStream with: (GZipReadStream on: aFileStream) upToEnd) reset! !

!Object class methodsFor: '*services-extras' stamp: 'edc 7/27/2008 06:55'!
fileReaderServicesForFile: fullName suffix: suffix 
	| services |
	services := OrderedCollection new.
	(fullName asLowercase endsWith: '.obz')
		ifTrue: [services add: self serviceCompressedObject].
	(fullName asLowercase endsWith: '.obj')
		ifTrue: [services add: self serviceLoadObject].
	^ services! !

!Object class methodsFor: '*services-extras' stamp: 'edc 7/27/2008 07:40'!
serviceCompressedObject
	"Answer a service for opening a saved Object"
	^ (SimpleServiceEntry
		provider: Object
		label: 'gz saved Object'
		selector: #readCompressedObject:
		description: 'open a gz Object'
		buttonLabel: 'object')
		argumentGetter: [:fileList | 
			
			fileList readOnlyStream]! !

!Object class methodsFor: '*services-extras' stamp: 'edc 2/14/2008 08:26'!
serviceLoadObject
"Answer a service for opening a saved Object"

	^ (SimpleServiceEntry 
		provider: self 
		label: 'saved Object'
		selector: #readAndInspect:
		description: 'open a Object'
		buttonLabel: 'object')
		argumentGetter: [:fileList | fileList readOnlyStream]! !



More information about the Squeak-dev mailing list