[squeak-dev] Re: Newbie Question: How does this work?

Chris Cunnington smalltalktelevision at gmail.com
Wed Oct 10 16:13:15 UTC 2012


On 12-10-10 12:07 PM, Joseph J Alotta wrote:
> I know I can make changes directly to String and add a method.   But I was wondering if I can
> add a method to String and still keep the code in my Package.   (I've made my own package/category called JJA
> that contains all the object that pertain to my program.)
>
> So is there a way to create a method in my own category for a class in another category?
>
>
>
>
>
>> Message: 4
>> Date: Tue, 9 Oct 2012 16:16:59 +0100
>> From: Frank Shearar <frank.shearar at gmail.com>
>> Subject: Re: [squeak-dev] Re: Newbie Question: How does this work?
>> To: The general-purpose Squeak developers list
>> 	<squeak-dev at lists.squeakfoundation.org>
>> Message-ID:
>> 	<CAJbhyRH3WgsMDdYWMvnkdBF770kV=nqOOyxz1ysYrk=w4u_Ygg at mail.gmail.com>
>> Content-Type: text/plain; charset=ISO-8859-1
>>
>> On 9 October 2012 16:08, Joseph J Alotta <joseph.alotta at gmail.com> wrote:
>>> Thanks for you help.
>>>
>>> I see that String has a #printf and the protocol is *printf,  and when the printf: method executes it looks everywhere for the FormatString class which is added to the end by the Printf package.
>>>
>>> So the question is how did the *printf protocols get added to String?   It is not some magic by Monticello, because I did not use
>>> Monticello, I just filein-ed the code.
>>>
>>> So where in the code does it install the *printf methods to String?
>> The original code (in what's called "chunk format") was incomplete. If
>> it had been complete (like the Printf Chris Cunnington's mentioned)
>> you'd have seen something like this:
>>
>> !String methodsFor: '*printf'!
>> printf: arguments
>>         ^ self asFormatString printf: arguments! !
>>
>> In Monticello these chunks are instead represented by MCDefinition subclasses.
>>
>> frank
>
Go to class String. Right click on the protocol (third pane from the 
left) at "--all--". Select "add category". Select "new".
Type "*jja" and accept. Drag your method into that protocol category.

Chris


More information about the Squeak-dev mailing list