[squeakland] [etoys-dev] If I create a text string which contains squeak code, how can I execute it from within a script?

Bert Freudenberg bert at freudenbergs.de
Wed Feb 1 17:23:32 EST 2012


On 01.02.2012, at 13:53, Bert Freudenberg wrote:

> 
> On 01.02.2012, at 13:24, Steve Thomas wrote:
> 
>> Folks,
>> 
>> I am trying to create a project where kids can enter their own "Connector" functions.
>> 
>> So what I want to do is given a connector connected to two text boxes (one Enhanced Text, so I can execute a script when they hit <CR> or on <focus loss>).
>> I have a string variable defined for the connector, in which the kids can enter a function like ( D = S + 25)
>> Where D maps to DestinationPlayer and S maps to SourcePlayer.
>> 
>> Ideally I would like to generate the below script and execute it:
>> 
>> doIt
>> 	self getDestinationPlayer setNumericValue: self getSourcePlayer getNumericValue + 25
>> 
>> 
>> Need some squeak coding help on this.  I guess specifically, assuming I can figure out how to create a string with the correct code ...
>> How do I "do it" to the string?
> 
> 
> Compiler evaluate: '3 + 4'
> 
> - Bert -


... and to be a bit less brief, a simple way to introduce variables is compiling a block:

	(Compiler evaluate: '[:a :b | a + b ]') value: 3 value: 4

Also see attached your project, enhanced.

[I'd get rid of the D and S and the assignment, just have the kids enter "x + 25". Makes the veal code simpler. Also, watch out for "3 + 4 * 5" having not the same result as when using Etoys tiles. The way around that would be to implement an actual grammar for your functions, not just re-use the Smalltalk grammar]

- Bert -

-------------- next part --------------
A non-text attachment was scrubbed...
Name: ConnectorMath.002.pr
Type: application/x-squeak-project
Size: 50860 bytes
Desc: not available
URL: <http://lists.squeakland.org/pipermail/squeakland/attachments/20120201/3dfca365/attachment-0001.bin>


More information about the squeakland mailing list