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