Hi sven

I think that I will have to hack my own, I was just surprised that we do not have a nice way back
from tokens back to code. (not talking about quote inside strings). 


String streamContents: [ :s |
#('self' 'classVariables:' ${ #A $. #B $}) 
do: [ :each | s print: each ]
separatedBy: [ s space ]].

 '''self'' ''classVariables:'' ${ #A $. #B $}���

S.




On 20 Jan 2020, at 10:45, Sven Van Caekenberghe <sven@stfx.eu> wrote:

#foo printString.  
'#foo'

String streamContents: [ :out | out print: #foo ].
'#foo'

String streamContents: [ :out | out << #foo ].
'foo'

I would not use #storeOn: directly, I would consider the fact that String>>#printOn: uses it an implementation detail, and a confusing one at that.

On 20 Jan 2020, at 03:54, Eliot Miranda <eliot.miranda@gmail.com> wrote:



On Jan 19, 2020, at 1:50 PM, St��phane Ducasse <stephane.ducasse@inria.fr> wrote:

���
The idea that is that I would like to be able to 

text -> tokens -> text

For text -> tokens 

(RBScanner on: 'self classVariables: { #A . #B }' readStream)
contents collect: #value


I wrote a little method that takes the result of the RBScanner and recreate the text
But I cannot get this method to work. 
I���m puzzled because the symbols are eaten.


expressionStringFrom: aLine

"self new 
expressionStringFrom:  #('self' 'classVariables:' ${ #A $. #B $}) 
>>> 
'self classVariables: { A . B }'
"
^ String streamContents: [ :s |
aLine 
do: [ :each | s << each ]
separatedBy: [ s space ]]

I tried with print:, printOn:, but I failed. 

Any idea?

With Symbols one needs to use storeOn:


S. 




--------------------------------------------
St��phane Ducasse
http://stephane.ducasse.free.fr / http://www.pharo.org 
03 59 35 87 52
Assistant: Julie Jonas 
FAX 03 59 57 78 50
TEL 03 59 35 86 16
S. Ducasse - Inria
40, avenue Halley, 
Parc Scientifique de la Haute Borne, B��t.A, Park Plaza
Villeneuve d'Ascq 59650
France