Blocks from strings

Lothar Schenk lothar.schenk at gmx.de
Tue Dec 30 12:28:24 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. For what do you use it?

Regards,

Lothar







More information about the Squeak-dev mailing list