On Fri, Jun 27, 2014 at 11:58 AM, Esteban A. Maringolo <emaringolo@gmail.com> wrote:
Because Smalltalk lacks a "switch/case" control flow structure? :)

and of course it has one that works just fine.

Esteban A. Maringolo


2014-06-27 15:42 GMT-03:00 Denis Kudriashov <dionisiydk@gmail.com>:
> I always wondering how anybody can write such code with smalltalk
>
>
> 2014-06-26 0:43 GMT+04:00 stepharo <stepharo@free.fr>:

Steph, it begs for double-dispatching. ��So why shoot InfiniteForm instead of fixing the code/ ��It makes no sense to me. ��Double-dispatching is a pattern you know well. ��Apply it here.
��
>
>> because when I see code like that, it makes me sick!
>> I wonder also when we migrate to Athens if we will not rewrite all that
>> anyway.
>>
>> fillRectangle: aRectangle basicFillStyle: aFillStyle
>> �� �� "Fill the given rectangle with the given, non-composite, fill style."
>>
>> �� �� | pattern |
>>
>> �� �� (aFillStyle isKindOf: InfiniteForm) ifTrue: [
>> �� �� �� �� ^self infiniteFillRectangle: aRectangle fillStyle: aFillStyle
>> �� �� ].
>>
>> �� �� (aFillStyle isSolidFill)
>> �� �� �� �� ifTrue:[^self fillRectangle: aRectangle color: aFillStyle
>> asColor].
>>
>> �� �� "We have a very special case for filling with infinite forms"
>> �� �� (aFillStyle isBitmapFill and:[aFillStyle origin = (0@0)]) ifTrue:[
>> �� �� �� �� pattern := aFillStyle form.
>> �� �� �� �� (aFillStyle direction = (pattern width @ 0)
>> �� �� �� �� �� �� and:[aFillStyle normal = (0@pattern height)]) ifTrue:[
>> �� �� �� �� �� �� �� �� "Can use an InfiniteForm"
>> �� �� �� �� �� �� �� �� ^self fillRectangle: aRectangle color: (InfiniteForm with:
>> pattern)].
>> �� �� ].
>> �� �� "Use a BalloonCanvas instead"
>> �� �� self balloonFillRectangle: aRectangle fillStyle: aFillStyle.
>>
>




--
best,
Eliot