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

Bert Freudenberg <[email protected]>
Newsgroups gmane.comp.lang.smalltalk.squeak.squeakland
Message-ID <[email protected]>
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 -

_______________________________________________
squeakland mailing list
[email protected]
http://lists.squeakland.org/mailman/listinfo/squeakland
ConnectorMath.002.pr (application/x-squeak-project, 49.7 KB) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.