Blocks from strings
Laurence.Rozier at knowledgearchitects.net
Laurence.Rozier at knowledgearchitects.net
Tue Dec 30 23:41:48 UTC 2003
>Ned Konz wrote:
>
>> On Monday 29 December 2003 8:28 pm, Nevin Pratt wrote:
>> > How do I programmatically create a block from a string?
>> > The block's context would be the method that is creating the block.
>
>> This is kind of an excerpt from some of my code; you can try it in a
>> Workspace.
>>
>> model := nil. "or set to Browser or Workspace, etc."
>> stream := ReadWriteStream
>> on: (String new: 100).
>> stream nextPutAll: '[ 3 + 4 ]'. "your code here in brackets"
>> stream reset.
>> (model respondsTo: #doItReceiver)
>> ifTrue: [FakeClassPool adopt: model selectedClass.
>> "Include model pool vars if any"
>> rcvr := model doItReceiver.
>> ctxt := model doItContext]
>> ifFalse: [rcvr := ctxt := nil].
>> result := [rcvr class evaluatorClass new
>> evaluate: stream
>> in: ctxt
>> to: rcvr
>> notifying: self
>> ifFail: [FakeClassPool adopt: nil.
>> ^ #failedDoit]]
>> on: OutOfScopeNotification
>> do: [:ex | ex resume: true].
>> FakeClassPool adopt: nil.
>>
>> result value
>
>This does not look like something one does routinely.
Most apps don't but we all do it everyday - see ParagraphEditor evaluateSelection ...
>For what do you use it?
I use this type of thing all the time to add behaviors to instances with Morph Dynamic Behaviors which is on Squeak Map.
-Laurence
>
>Regards,
>
>Lothar
>
>
>
>
>
More information about the Squeak-dev
mailing list
|