Blocks from strings

Ned Konz ned at squeakland.org
Tue Dec 30 04:49:41 UTC 2003


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.
> 
> Nevin
> 
> 
> -- 
> Nevin Pratt
> Bountiful Baby
> http://www.bountifulbaby.com
> (801) 992-3137
> 
> 

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



More information about the Squeak-dev mailing list