[squeak-dev] About Compiler-cmm.131

Juan Vuletich juan at jvuletich.org
Wed Mar 3 12:32:23 UTC 2010


Hi Chris,

Chris Muller wrote:
> Hi, I've just posted refinements to the inbox for pretty-print to
> provide Rectangular Block and Indented Control Flow as suggested by
> Ward Cunningham at:
>
> 	http://c2.com/ppr/formatting.html#2
>
> These formatting rules maximize readability while balancing screen
> space (and methods should be short anyway).  However, I did only push
> these to the inbox for now, due to the potentially combustible nature
> of this sort of change.
>
> Unless there are major objections, I'd like to copy these to the trunk
> so we can all enjoy gorgeous Rectangular Block formatting.
>
>  - Chris
>   

Thanks! I love it! I did a couple of tweaks I hope you'll like:

1) Separate lines for block
    a) if block has arguments (as if it had temps)
    b) if the single statement is complex (as if it had many statements)

2) Brace arrays formatted as rectangluar blocks

!BlockNode methodsFor: 'printing' stamp: 'jmv 3/3/2010 09:09'!
printOn: aStream indent: level
    | separateLines |
    aStream
         nextPut:  $[ ;
         space.
    self
        printArgumentsOn:  aStream
        indent:  level.
    separateLines := (self
        printTemporaries: temporaries
        on:  aStream
        doPrior:  [ ] ) or: [ arguments size > 0 ].
    separateLines ifTrue:
        [ "If args+temps > 0 and statements > 1 (or just one complex 
statement), put all statements on separate lines"
        (statements size >  1 or: [ statements size = 1 and: [statements 
first isComplex]])
            ifTrue:  [ aStream crtab:  level ]
            ifFalse:  [ aStream space] ] .
    self
        printStatementsOn:  aStream
        indent:  level.
    aStream
         space ;
         nextPut:  $]! !


!BraceNode methodsFor: 'printing' stamp: 'jmv 3/3/2010 08:58'!
printOn: aStream indent: level
    aStream
         crtab: level+1.
    aStream nextPut: ${.
    1
        to: elements size
        do:
            [ : i |
            (elements at: i)
                printOn: aStream
                indent: level.
            i < elements size ifTrue:
                [ aStream
                     nextPutAll: '. ' ;
                     crtab: level+1 ] ].
    aStream nextPut: $}! !

BTW, according to http://c2.com/ppr/formatting.html#2, the author is 
Kent Beck.

Cheers,
Juan Vuletich



More information about the Squeak-dev mailing list