#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 <[email protected]> wrote: > > > >> On Jan 19, 2020, at 1:50 PM, Stéphane Ducasse <[email protected]> >> 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
