[squeak-dev] Re: SISS serialisation format?

H. Hirzel hannes.hirzel at gmail.com
Wed Aug 31 07:07:16 UTC 2016


An entry point for reading about SISS in the Squeakland Etoys 5.0 image

QuickGuideMorph>>

convertProjectsWithBooksToSISSIn: dir to: outDir

	| p book |
	dir fileNames do: [:f |
		(f endsWith: '.pr') ifTrue: [
			p _ ProjectLoading loadName: f stream: (dir readOnlyFileNamed: f)
fromDirectory: dir withProjectView: nil.
			book _ p world submorphs detect: [:b | b isMemberOf: BookMorph]
ifNone: [nil].
			book ifNotNil: [
				book hidePageControls.
				book storeAsDataStreamNamed: (outDir fullNameFor: (f copyUpTo:
$.), '.sexp.data.gz').
			].
			p okToChangeSilently.
		].
	].

On 8/31/16, H. Hirzel <hannes.hirzel at gmail.com> wrote:
> Hello
>
> I understand that the SISS serialisation format has been used in the
> Etoys 5.0 image to store quick guides. It is a plain text format.
>
> What does SISS stand for?
>
> Browsing the Etoys 5.0 image .....
>
> To use SISS classes need to implement a method
>
>    sissExportSpecification
>
>
> For example for Workspace it is
>
>
> sissExportSpecification
>
> 	^ #(('contents' #sissGetContents)
> 		('bindings' #bindings)
> 		('acceptDroppedMorphs' #acceptsDroppingMorphForReference)
> 	)
>
>
> And a method
>
> sissWriteValue
>
> Morph >> sissWriteValue
> sissWriteValue
>
> 	self prepareToBeSaved.
>
>
> or
>
> Object>>sissWriteValue
> sissWriteValue
> 	"Override if you wish"
>
> 	^self
>
>
> PasteUpMorph>>sissWriteValue
> sissWriteValue
> 	"Override if you wish"
>
> 	| new |
> 	self prepareToBeSaved.
> 	new _ self clone.
> 	new privateSubmorphs: (submorphs reject: [:e |
> 		(e isKindOf: SolidSugarSuppliesTab)
> 			or: [(e isKindOf: Viewer)
> 				or: [(e isKindOf: SugarNavTab)
> 					or: [((e isKindOf: SystemWindow) and: [(e model isKindOf: Workspace)
> not])
> 						or: [(e isMemberOf: FlapTab) and: [e isGlobalFlap]]]]]]).
> 	new instVarNamed: 'presenter' put: nil.
> 	new instVarNamed: 'worldState' put: nil.
> 	new privateExtension: self extension copy.
> 	new extension removeOtherProperties.
> 	self extension otherProperties keysDo: [:sym |
> 		(#(commandKeySelectors lastKeystroke locked) includes: sym) ifFalse: [
> 			new setProperty: sym toValue: (self extension valueOfProperty: sym)
> 		].
> 	].
>
> 	^ new.
>
>
>
> Form>>
> sissWriteValue
>
> 	SISSDictionaryForScanning reduceFormDepth ifTrue: [
> 		^ (self asFormOfDepth: 8) hibernate.
> 	].
> 	^ self hibernate.
>
>
>
>
>
> An example of the format
>
> MSExpParser test1
>
>         | str1 str2 str3 |
>         str1 _ '(script :name "testscript1:" :type "Player" :player "12"
>                 (parameter :name "parameter" :type "Number" :position "1")
>                 (sequence
>                         (loop :type "repeat"
>                                 (initial (literal :value "0"))
>                                 (increment (literal :value "1"))
>                                 (test (send :type "Number"
>                 (selector :selector "+")
>                 (send :type "Number"
>                         (selector :getter "x")
>                         (literal :type "Player" :value "self"))
>                 (literal :type "Number" :value "1")))
>                                 (sequence
>                                         (assign :type "Number"
> :updating "Incr:" :property "x"
>                                                 (literal :type
> "Player" :value "4")
>                                                 (send :type "Number"
>                                                         (selector :selector
> "+")
>                                                         (literal :type
> "Number" :value "244.0")
>                                                         (literal :type
> "Number" :value "1")))))))'.
>
>
>
> I understand that the SISS format has been used successfully in the
> Etoys image to store quick guide projects.
>
> As far as Project saving is concerned it there a  difference between
> Etoy Quick guide projects and regular Squeak Morphic projects?
>
> Where can I find more information on the SISS format?
>
> Regards
>
> Hannes
>


More information about the Squeak-dev mailing list