'From Squeak3.1alpha of 5 February 2001 [latest update: #3744] on 27 February 2001 at 12:45:45 pm'! "Change Set: syntax6 Date: 27 February 2001 Author: Bob Arning more of the same"! !SyntaxMorph methodsFor: 'node to morph' stamp: 'RAA 2/27/2001 12:22'! alanKeywordMessage: aNode isAConditional: template key: key args: args | nodeWithNilReceiver column keywords row onlyOne | (key == #collect: and: [args first isKindOf: BlockNode]) ifTrue: [ ^self alanKeywordMessageCollect: aNode isAConditional: template key: key args: args ]. nodeWithNilReceiver _ aNode copy receiver: nil. template = 1 ifTrue: [ self listDirection: #topToBottom. ]. column _ self addColumn: #keyword1 on: nodeWithNilReceiver. keywords _ key keywords. onlyOne _ args size = 1. keywords with: (args first: keywords size) do: [:kwd :arg | template = 1 ifTrue: [ column addMorphBack: (column transparentSpacerOfSize: 3@3). ]. (row _ column addRow: #keyword2 on: nodeWithNilReceiver) borderWidth: 1; parseNode: (nodeWithNilReceiver as: (onlyOne ifTrue: [MessageNode] ifFalse: [MessagePartNode])); borderColor: row stdBorderColor. template = 1 ifTrue: [row addMorphBack: (row transparentSpacerOfSize: 20@6)]. key == #if:do: ifTrue: [ kwd = 'do:' ifTrue: [ row addMorphBack: (row transparentSpacerOfSize: 26@6). ] ifFalse: [ row addMorphBack: (row transparentSpacerOfSize: 10@6). ]. row addTokenSpecialCase: kwd type: #keyword2 on: KeyWordNode new. ] ifFalse: [ row addToken: kwd type: #keyword2 on: (onlyOne ifTrue: [SelectorNode new key: kwd code: nil "fill this in?"] ifFalse: [KeyWordNode new]). template = 0 ifTrue: [ "row addMorphBack: self tokenVerticalSeparator" ]. ]. (arg asMorphicSyntaxIn: row) setConditionalPartStyle. ]. onlyOne ifTrue: [ self replaceSubmorph: column by: row. column _ row. ]. "column setSpecialOuterTestFormat." ! ! !SyntaxMorph methodsFor: 'node to morph' stamp: 'RAA 2/27/2001 12:23'! alansMessageNode: aNode receiver: receiver selector: selector keywords: key arguments: args | row receiverMorph testAndReceiver anotherSelf wordyMorph template | template _ self alansTemplateStyleFor: key. receiver ifNotNil: ["i.e. not a cascade" anotherSelf _ self constructSelfVariant: receiver and: key. anotherSelf ifNotNil: [ wordyMorph _ self addString: anotherSelf. wordyMorph setProperty: #wordyVariantOfSelf toValue: true. self addMorph: wordyMorph. self layoutInset: 1. ^self ]. testAndReceiver _ self. template = 1 ifTrue: [ testAndReceiver _ self addRow: #keyword1 on: nil. self setSpecialOuterTestFormat. testAndReceiver addNoiseString: 'Test' ]. false "template = 2" ifTrue: [ testAndReceiver _ self addRow: #keyword1 on: nil. "self setSpecialOuterTestFormat." testAndReceiver addNoiseString: 'Repeat for' ]. receiverMorph _ receiver asMorphicSyntaxIn: testAndReceiver. template = 1 ifTrue: [receiverMorph setConditionalPartStyle]. ]. "unary mssages" args size = 0 ifTrue: [ row _ (self addUnaryRow: key style: #unary) layoutInset: 1. ^ row parseNode: selector ]. "binary messages" key last = $: ifFalse: [ ^self alanBinaryPostRcvr: aNode key: key args: args ]. "keyword messages" receiverMorph ifNotNil: [receiverMorph setConditionalPartStyle]. self setSpecialOuterTestFormat. self alanKeywordMessage: aNode isAConditional: template key: key args: args! ! !SyntaxMorph methodsFor: 'node to morph' stamp: 'RAA 2/27/2001 12:41'! assignmentNode: aNode variable: variable value: value | row v expMorph | row _ self addRow: #assignment on: aNode. v _ variable asMorphicSyntaxIn: row. self alansTest1 ifTrue: [v setConditionalPartStyle; layoutInset: 2]. row addToken: ' _ ' type: #assignment on: aNode. expMorph _ value asMorphicSyntaxIn: row. self alansTest1 ifTrue: [ row setSpecialOuterTestFormat. (expMorph hasProperty: #deselectedColor) ifFalse: [expMorph setConditionalPartStyle]. ]. ^row ! ! !SyntaxMorph methodsFor: 'node to morph' stamp: 'RAA 2/27/2001 12:39'! returnNode: aNode expression: expr | row w2 expMorph | row _ self addRow: #return on: aNode. self alansTest1 ifTrue: [ row setSpecialOuterTestFormat. (row addToken: ' my ' type: #upArrow on: aNode) setConditionalPartStyle. row "addMorphBack: (w1 _ self noiseStringMorph: 'my');" addMorphBack: (w2 _ self noiseStringMorph: ' reply is '). w2 emphasis: 1. ] ifFalse: [ row addToken: '^ ' type: #upArrow on: aNode. ]. expMorph _ expr asMorphicSyntaxIn: row. self alansTest1 ifTrue: [ (expMorph hasProperty: #deselectedColor) ifFalse: [expMorph setConditionalPartStyle]. ]. expr addCommentToMorph: row. ^row ! !