[Pkg] SystemEditor: TraitEditor-mtf.9.mcz
squeak-dev-noreply at lists.squeakfoundation.org
squeak-dev-noreply at lists.squeakfoundation.org
Tue Oct 14 17:22:35 UTC 2008
A new version of TraitEditor was added to project SystemEditor:
http://www.squeaksource.com/SystemEditor/TraitEditor-mtf.9.mcz
==================== Summary ====================
Name: TraitEditor-mtf.9
Author: mtf
Time: 14 October 2008, 10:23:48 am
UUID: 1f545e3e-afbf-41c6-94a3-e6daca385ec8
Ancestors: TraitEditor-mtf.8
filled in enough stuff that a package can successfully build a SystemEditor containing TraitCompositions. It immediately fails upon commit, of course
=============== Diff against TraitEditor-mtf.8 ===============
Item was added:
+ ----- Method: TraitCompositionEditor>>transformations (in category 'reflecting') -----
+ transformations
+ transformations ifNotNil: [^ transformations].
+ subject ifNil: [^ OrderedCollection new].
+ ^ self subject transformations!
Item was changed:
+ AbstractEditor subclass: #TraitCompositionEditor
+ instanceVariableNames: 'subject transformations'
- Object subclass: #TraitCompositionEditor
- instanceVariableNames: 'subject additions removals'
classVariableNames: ''
poolDictionaries: ''
category: 'TraitEditor'!
+
+ !TraitCompositionEditor commentStamp: 'mtf 10/14/2008 10:02' prior: 0!
+ I store the new version of a TraitComposition. I don't use any kind of diff between the subject and product. For now at least, I don't use a TraitTransformationEditor, but use plain TraitTransforms which include TraitEditors!
Item was added:
+ ----- Method: TraitDescriptionEditor>>trait (in category 'reflecting') -----
+ trait
+ "for compatibility with TraitTransformations"
+ ^ self
+ !
Item was added:
+ ----- Method: TraitDescriptionEditor>>addCompositionOnLeft: (in category 'reflecting') -----
+ addCompositionOnLeft: aTraitComposition
+ ^ aTraitComposition add: self!
Item was added:
+ ----- Method: TraitCompositionEditor>>@ (in category 'reflecting') -----
+ @ anArrayOfAssociations
+ "the modifier operators #@ and #- bind stronger than +.
+ Thus, #@ or #- sent to a sum will only affect the most right summand"
+
+ self prepareToChange.
+ transformations
+ addLast: (transformations removeLast @ anArrayOfAssociations)!
Item was added:
+ ----- Method: ClassEditor>>braceStream: (in category '*TraitEditor') -----
+ braceStream: nElements
+ "Allows brace arrays used in TraitCompositions to execute in an editor context"
+
+ ^ self subject braceStream: nElements!
Item was added:
+ ----- Method: TraitCompositionEditor>>includesTrait: (in category 'reflecting') -----
+ includesTrait: aTrait
+ ^ self transformations anySatisfy: [:transformation | transformation trait == aTrait]!
Item was added:
+ ----- Method: ClassEditor>>braceWith:with: (in category '*TraitEditor') -----
+ braceWith: a with: b
+ "Allows brace arrays used in TraitCompositions to execute in an editor context"
+
+ ^ self subject braceWith: a with: b!
Item was added:
+ ----- Method: TraitCompositionEditor>>- (in category 'reflecting') -----
+ - anArray
+ "the modifier operators #@ and #- bind stronger than +.
+ Thus, #@ or #- sent to a sum will only affect the most right summand"
+
+ self prepareToChange.
+ transformations
+ addLast: (transformations removeLast - anArray)!
Item was added:
+ ----- Method: TraitDescriptionEditor>>+ (in category 'reflecting') -----
+ + aTraitOrTraitComposition
+ "Use double dispatch to avoid having nested composition in cases where
+ parenthesis are used, such as T1 + (T2 + T3)"
+
+ ^aTraitOrTraitComposition addOnTheLeft: self!
Item was added:
+ ----- Method: TraitCompositionEditor>>prepareToChange (in category 'private') -----
+ prepareToChange
+ "Mark the composition as changed by setting transformations to be non-nil"
+ transformations ifNil: [self loadTransformations]!
Item was added:
+ ----- Method: TraitDescriptionEditor>>@ (in category 'reflecting') -----
+ @ anArrayOfAssociations
+ ^ TraitAlias with: self aliases: anArrayOfAssociations!
Item was added:
+ ----- Method: ClassEditor>>braceWith:with:with: (in category '*TraitEditor') -----
+ braceWith: a with: b with: c
+ "Allows brace arrays used in TraitCompositions to execute in an editor context"
+
+ ^ self subject braceWith: a with: b with: c!
Item was added:
+ ----- Method: ClassEditor>>braceWith:with:with:with: (in category '*TraitEditor') -----
+ braceWith: a with: b with: c with: d
+ "Allows brace arrays used in TraitCompositions to execute in an editor context"
+
+ ^ self subject braceWith: a with: b with: c with: d!
Item was added:
+ ----- Method: TraitCompositionEditor>>addCompositionOnLeft: (in category 'reflecting') -----
+ addCompositionOnLeft: aTraitComposition
+ self transformations do: [ : each | aTraitComposition add: each ].
+ ^ aTraitComposition!
Item was added:
+ ----- Method: TraitCompositionEditor>>add: (in category 'reflecting') -----
+ add: aTraitTransformation
+ self errorIfNotAddable: aTraitTransformation.
+ self prepareToChange.
+ transformations addLast: aTraitTransformation!
Item was added:
+ ----- Method: TraitCompositionEditor>>remove: (in category 'reflecting') -----
+ remove: aTransformation
+ self prepareToChange.
+ transformations remove: aTransformation!
Item was added:
+ ----- Method: TraitDescriptionEditor>>addOnTheLeft: (in category 'reflecting') -----
+ addOnTheLeft: aTraitExpression
+ ^TraitCompositionEditor with: aTraitExpression with: self!
Item was added:
+ ----- Method: TraitDescriptionEditor>>- (in category 'reflecting') -----
+ - anArrayOfSelectors
+ ^TraitExclusion
+ with: self
+ exclusions: anArrayOfSelectors!
Item was added:
+ ----- Method: TraitCompositionEditor>>loadTransformations (in category 'private') -----
+ loadTransformations
+ "initialize the transformations from the subject"
+ self subject ifNil: [^ transformations := OrderedCollection new].
+ self halt.!
Item was added:
+ ----- Method: TraitCompositionEditor>>+ (in category 'reflecting') -----
+ + aTraitExpression
+ ^ aTraitExpression addCompositionOnLeft: self.
+ !
Item was added:
+ ----- Method: TraitCompositionEditor>>size (in category 'reflecting') -----
+ size
+ ^ self transformations size!
Item was added:
+ ----- Method: TraitCompositionEditor>>errorIfNotAddable: (in category 'private') -----
+ errorIfNotAddable: aTraitTransformation
+ (self includesTrait: aTraitTransformation trait) ifTrue: [
+ ^TraitCompositionException
+ signal: 'Trait ' , aTraitTransformation trait asString, ' already in composition']!
Item was added:
+ ----- Method: TraitCompositionEditor>>subject (in category 'accessing') -----
+ subject
+ ^ subject!
Item was added:
+ ----- Method: TraitCompositionEditor>>addOnTheLeft: (in category 'reflecting') -----
+ addOnTheLeft: aTrait
+ self errorIfNotAddable: aTrait.
+ self prepareToChange.
+ transformations addFirst: aTrait!
Item was added:
+ ----- Method: TraitCompositionEditor class>>with: (in category 'instance creation') -----
+ with: aTraitTransformation
+ ^self new
+ add: aTraitTransformation;
+ yourself!
Item was added:
+ ----- Method: ClassEditor>>braceWith: (in category '*TraitEditor') -----
+ braceWith: a
+ "Allows brace arrays used in TraitCompositions to execute in an editor context"
+
+ ^ self subject braceWith: a!
Item was added:
+ ----- Method: TraitCompositionEditor class>>with:with: (in category 'instance creation') -----
+ with: aTraitTransformation with: anotherTraitTransformation
+ ^self new
+ add: aTraitTransformation;
+ add: anotherTraitTransformation;
+ yourself!
More information about the Packages
mailing list