[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
|