Thanks Andreas, I was just coming to the conclusion you have pointed out. I 
haven't had a computer to try it - but I'll try your example.

If it works, I think this should almost be in the std image so that Pharo plays 
better with others straight out of the box.

The " issue is when calling from other other languages (e.g. Nodejs). Try 
passing some Json as a parameter using exec and you hit this issue with the 
eval handler - but maybe with my own handler I can do something better? I need 
to study this and will report back.

Thanks,

Tim

Sent from my iPhone

> On 1 Jul 2017, at 17:17, Andreas Sunardi <a.suna...@gmail.com> wrote:
> 
> If I'm not mistaken, this is Pharo's eval command line handler you're talking 
> about. If so, it is not correct to say 'it also return the result of that 
> method or yourself'. To return the result (and print it to stdout) of that 
> method is the goal of eval command line handler.
> 
> How about making your method to return empty string, or better create your 
> own command line handler. I believe the minimal you need to do is to subclass 
> EvaluateCommandLineHandler, override class method #commandName and override 
> method #evaluate:. Something like this, perhaps
> 
> ProceesCommandLineHandler class >> commandName
>   ^ 'process'
> 
> ProcessCommandLineHandler >> evaluate: aStream
>   Smalltalk evaluate: aStream.
> 
> Save your image, then you can call
> ./pharo -headless myimage.image process StandardFileStream stdout print: 42
> 
> and it'll print 42 and nothing else.
> 
> I'm not sure I understand the double quote (") character issue that \" 
> solves. Example?
>   
> 
> 
>> On Thu, Jun 29, 2017 at 7:02 AM, Tim Mackinnon <tim@testit.works> wrote:
>> Hi - I've been playing with using Pharo with Aws lambda and have got an 
>> image to launch in that environment.
>> 
>> However now I need to better integrate Pharo with its calling environment - 
>> and I know there was a concerted effort to make Pharo play better which I 
>> should be able to leverage.
>> 
>> So I am calling  Pharo from a NodeJS wrapper  (the suggested aws method for 
>> integrating alternative languages like Ruby, Go etc).
>> 
>> I got this to work - however as an observation, it is rather awkward passing 
>> parameters to Pharo using the "eval" mechanism as other languages and 
>> environments frequently use the " character (particularly with Json)  and 
>> this causes Pharo to fail if you don't \" this. I'm wondering if others have 
>> noted this and whether we can do this better somehow? For now a little 
>> nodeJS regex fu gets me past it.
>> 
>> However my next question is about passing information back to the calling 
>> application.
>> 
>> I can see that there is a stdout method on Fikestream that I can write to 
>> (great), however in my ./pharo eval call, which sends to a class method 
>> doing this - it also returns the result of that method or yourself? I guess 
>> this convention is great for the "eval 42 factorial" example but not so 
>> great of you just want to return some Json via stdout in a format of the 
>> calling environment?
>> 
>> Is there something simple trick I can do to  stop this extra result and just 
>> let me use stdout myself? Or do I have to return a Smalltalk string and then 
>> regex convert it to a new format in my calling language?
>> 
>> I'm wondering if others have done this, or if anyone has some advice?
>> 
>> It feels like a usecase that we might be able to do better somehow?
>> 
>> Tim
>> 
>> Sent from my iPhone
>> 
> 

Reply via email to