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
|