help-smalltalk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Help-smalltalk] What's wrong with this script??


From: Mehul Sanghvi
Subject: Re: [Help-smalltalk] What's wrong with this script??
Date: Thu, 25 Feb 2010 18:13:43 -0500

Thanks Paolo.  So where/when/what version of ST  should new syntax be used ?

Is this a GST thing or a ST thing in general ?  I don't recall seeing
the old syntax
in the "Smalltalk, Objects, and Design' book, but then it could be
that I was not
paying too much attention.

I have seen it in the GST info pages, but that's the only place.


On Thu, Feb 25, 2010 at 14:56, Paolo Bonzini <address@hidden> wrote:
> On 02/25/2010 08:03 PM, Mehul Sanghvi wrote:
>>
>> Being new to Smalltalk, and learning it on and off when I get time
>> here and there, what is "new" syntax if the "old" syntax is the "!"
>> ?
>
> New syntax is like this:
>
>
> Object subclass: Base64 [
>    Base64 class >> encode: aString [
>        | i j outSize c1 c2 c3 out b64string chars |
>        chars := ##('ABCDEFGHIJKLMNOPQRSTUVWXYZ',
>                    'abcdefghijklmnopqrstuvwxyz0123456789+/=').
>        outSize := aString size // 3 * 4.
>        (aString size \\ 3) = 0 ifFalse: [ outSize := outSize + 4 ].
>        b64string := String new: outSize.
>
>        i := 1.
>        1 to: outSize by: 4 do: [ :j |
>            c1 := aString valueAt: i ifAbsent: [0].
>            c2 := aString valueAt: i+1 ifAbsent: [0].
>            c3 := aString valueAt: i+2 ifAbsent: [0].
>
>            out := c1 bitShift: -2.
>            b64string at: j put: (chars at: out + 1).
>
>            out := ((c1 bitAnd: 3) bitShift: 4) bitOr: (c2 bitShift: -4).
>            b64string at: j+1 put: (chars at: out + 1).
>
>            out := ((c2 bitAnd: 15) bitShift: 2) bitOr: (c3 bitShift: -6).
>            b64string at: j+2 put: (chars at: out + 1).
>
>            out := c3 bitAnd: 16r13F.
>            b64string at: j+3 put: (chars at: out + 1).
>
>            i := i + 3.
>        ].
>
>        b64string
>            replaceFrom: outSize - (i - aString size) + 2
>            to: outSize withObject: $=.
>
>       ^b64string
>   ]
> ]
>



-- 
Mehul N. Sanghvi
email: address@hidden
Samuel Goldwyn  - "I don't think anyone should write their
autobiography until after they're dead." -
http://www.brainyquote.com/quotes/authors/s/samuel_goldwyn.html




reply via email to

[Prev in Thread] Current Thread [Next in Thread]