On Tue, Feb 28, 2017 at 11:28 AM, Offray Vladimir Luna C��rdenas <offray.luna@mutabit.com> wrote:Hi,
I would like to store the object resulting from executing a playground. This would imply two steps:
- Knowing that the playground content was executed (via the play button or its shortcuts Ctrl + Shift + g or Ctrl + g).
- Getting the results of that execution. For example if the result at the end is a string or a dictionary, I would like to get that string or dictionary.
Any pointers on how to make that will be welcomed.
Cheers,
Offray
Ps: I still get lost when I search by myself trying to answer questions like the ones above. I imagine that in some way is related with evaluationAction and presentations, by looking for the source code of "do it and go", but still I can't get a functional code snippet to start prototyping.
In playground, if you evaluate "self halt. 42" at top of the debug stack you'll see method...�� ��Undefined>>DoIt ������ �� �� ��self halt.�� �� �� ��^ 42where stepping��OVER returns 42 into "value" variable in OpalCompiler>>evaluateOVER returns 42 into "result" variable in RubSmalltalkEditor>>evaluate:andDo: at the end of which stepping��INTO "^aBlock value: result" ��takes you to RubSmalltalkEditor>>highlightEvaluateAndDo:, where INTO "[:result | aBlock value: result]" �� ��takes you to GLMPharoScriptPResentation(GLMRubricSmalltalkCodePresenta tion)>> executionSelectionActions where changing "aPresentation highlightEvaluateAndDo: [ :result | ] ];���� �� �� �� �� �� �� �� �� �� �� to "aPresentation highlightEvaluateAndDo: [ :result | self inform: 'Result ' , result printString] ]; "�� ��and opening a new Playground, then evaluating "42" informs us that 42 is the result.Stepping further along, in GLMMorphicPharoScriptRenderer(GLMMorphicPharoCodePresentatio n)>>highlightEvaluateAndDo::�� the value returned from...�� �� self���� evaluate: self highlightedTextAsStream�� andDo: [:result | aBlock value: result. ].is not 42 but aGLMPharoScriptPresentation. ��it might help to change that to...���� andDo: [:result | aBlock value: result. ��result ].but anyway that return value is thrown away in GLMMorphicPharoScriptRenderer(GLMMorphicPharoCodePresentatio n)>>actOnHighlightAndEvaluate: So subclassing GLMRubricSmalltalkCodePresentation and overriding #executionSelectionActions is perhaps your best bet.�� Or some GLM expert provides a nice way for a user to set this customAssignmentBlock...�� �� �� aPresentation highlightEvaluateAndDo: [ :result | customAssignmentBlock value: result ].��in #executionSelectionActions.cheers -ben