Re: [Pharo-dev] printing Symbol

2020-01-20 Thread ducasse
In fact I did it because this is irregular in the sense that binary selector 
should not printed with # while the keywords based symbol should. 

(RBScanner on: '(RBScanner on: 'Object < #MyObject
classVariables: { #A. #B };
package: #MyPackage'  readStream)
contents collect: #value   readStream)
contents collect: #value 

>>> 
#('Object' #< #MyObject 'classVariables:' ${ #A $. #B $} $; 'package:' 
#MyPackage)


and back should be 
'Object < #MyObject
classVariables: { #A. #B };
package: #MyPackage'

> On 20 Jan 2020, at 16:22, ducasse  wrote:
> 
> 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 > > 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 >> > wrote:
>>> 
>>> 
>>> 
 On Jan 19, 2020, at 1:50 PM, Stéphane Ducasse >>> > 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
> 



Re: [Pharo-dev] printing Symbol

2020-01-20 Thread ducasse
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  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 > > wrote:
>> 
>> 
>> 
>>> On Jan 19, 2020, at 1:50 PM, Stéphane Ducasse  
>>> 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



Re: [Pharo-dev] printing Symbol

2020-01-20 Thread Sven Van Caekenberghe
#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  wrote:
> 
> 
> 
>> On Jan 19, 2020, at 1:50 PM, Stéphane Ducasse  
>> 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




Re: [Pharo-dev] printing Symbol

2020-01-19 Thread Eliot Miranda


> On Jan 19, 2020, at 1:50 PM, Stéphane Ducasse  
> 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
> 


[Pharo-dev] printing Symbol

2020-01-19 Thread Stéphane Ducasse
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?

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