From 67faf9f66d2a88f62e7b93582c3cc6b0a1517d58 Mon Sep 17 00:00:00 2001 From: oliveiraallex Date: Thu, 17 Sep 2026 15:53:36 +0200 Subject: [PATCH] Tonel v1 -> v3 cleanup (no code change) --- .../BaselineOfObjectTravel.class.st | 11 +- BaselineOfObjectTravel/package.st | 2 +- .../ObjectTravelerTests.class.st | 95 ++++++++-------- ObjectTravel-Tests/package.st | 2 +- ObjectTravel/Bitmap.extension.st | 4 +- ObjectTravel/ByteArray.extension.st | 4 +- ObjectTravel/CompiledCode.extension.st | 4 +- ObjectTravel/CompiledCodeTravelGuide.class.st | 15 +-- ObjectTravel/EmptyObjectTravelGuide.class.st | 15 +-- ObjectTravel/Number.extension.st | 4 +- ObjectTravel/Object.extension.st | 4 +- ObjectTravel/ObjectTravelGuide.class.st | 19 ++-- ObjectTravel/ObjectTraveler.class.st | 101 +++++++++--------- .../OrdinaryObjectTravelGuide.class.st | 15 +-- ObjectTravel/String.extension.st | 4 +- ObjectTravel/package.st | 2 +- 16 files changed, 154 insertions(+), 147 deletions(-) diff --git a/BaselineOfObjectTravel/BaselineOfObjectTravel.class.st b/BaselineOfObjectTravel/BaselineOfObjectTravel.class.st index c4bcab4..fbcb364 100644 --- a/BaselineOfObjectTravel/BaselineOfObjectTravel.class.st +++ b/BaselineOfObjectTravel/BaselineOfObjectTravel.class.st @@ -1,10 +1,11 @@ Class { - #name : #BaselineOfObjectTravel, - #superclass : #BaselineOf, - #category : #BaselineOfObjectTravel + #name : 'BaselineOfObjectTravel', + #superclass : 'BaselineOf', + #category : 'BaselineOfObjectTravel', + #package : 'BaselineOfObjectTravel' } -{ #category : #baselines } +{ #category : 'baselines' } BaselineOfObjectTravel >> baseline: spec [ spec for: #'common' do: [ @@ -20,7 +21,7 @@ BaselineOfObjectTravel >> baseline: spec [ ] -{ #category : #accessing } +{ #category : 'accessing' } BaselineOfObjectTravel >> projectClass [ ^ [ self class environment at: #MetacelloCypressBaselineProject ] on: NotFound diff --git a/BaselineOfObjectTravel/package.st b/BaselineOfObjectTravel/package.st index 03535ca..c734d2a 100644 --- a/BaselineOfObjectTravel/package.st +++ b/BaselineOfObjectTravel/package.st @@ -1 +1 @@ -Package { #name : #BaselineOfObjectTravel } +Package { #name : 'BaselineOfObjectTravel' } diff --git a/ObjectTravel-Tests/ObjectTravelerTests.class.st b/ObjectTravel-Tests/ObjectTravelerTests.class.st index 0d7ac93..97c085e 100644 --- a/ObjectTravel-Tests/ObjectTravelerTests.class.st +++ b/ObjectTravel-Tests/ObjectTravelerTests.class.st @@ -1,10 +1,11 @@ Class { - #name : #ObjectTravelerTests, - #superclass : #TestCase, - #category : 'ObjectTravel-Tests' + #name : 'ObjectTravelerTests', + #superclass : 'TestCase', + #category : 'ObjectTravel-Tests', + #package : 'ObjectTravel-Tests' } -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testCollectingRefereces [ | traveler actual | @@ -15,7 +16,7 @@ ObjectTravelerTests >> testCollectingRefereces [ actual should equal: { 10@20. 30@50. 10. 20. 30. 50 } ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testCompiledMethodShouldTraverseLiteralGlobals [ | traveler refs | (Point >> #extent:) literals. "{#Rectangle->Rectangle. #origin:extent:. #extent:. #Point->Point} " @@ -28,7 +29,7 @@ ObjectTravelerTests >> testCompiledMethodShouldTraverseLiteralGlobals [ refs should include: Rectangle ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testCompiledMethodShouldTraverseLiterals [ | traveler | (Point >> #extent:) literals. "{#Rectangle->Rectangle. #origin:extent:. #extent:. #Point->Point} " @@ -39,7 +40,7 @@ ObjectTravelerTests >> testCompiledMethodShouldTraverseLiterals [ traveler countReferences should equal: 8 "4 literals + 2 keys and 2 values from global variables" ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testCopyObject [ | traveler repeatedObject source copy | @@ -55,7 +56,7 @@ ObjectTravelerTests >> testCopyObject [ copy value value should equal: 40@50. ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testCountingRefereces [ | traveler actual | @@ -66,7 +67,7 @@ ObjectTravelerTests >> testCountingRefereces [ actual should be: 2 ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testCountingReferecesWhenGraphWithLoops [ | traveler repeatedObject source actual | @@ -79,7 +80,7 @@ ObjectTravelerTests >> testCountingReferecesWhenGraphWithLoops [ actual should be: 6 ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testFindingAllPathToParticularObject [ | traveler repeatedObject source result | @@ -94,7 +95,7 @@ ObjectTravelerTests >> testFindingAllPathToParticularObject [ result last should equalInOrder: { source value key. source value. source }. ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testGettingStartNode [ | traveler actual | @@ -105,7 +106,7 @@ ObjectTravelerTests >> testGettingStartNode [ actual should be: #start ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testIsAtEndWhenLastReferenceIsAlreadyTraversed [ | traveler repeatedObject | @@ -118,7 +119,7 @@ ObjectTravelerTests >> testIsAtEndWhenLastReferenceIsAlreadyTraversed [ traveler moveToNextReference should be: false ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testIsAtEndWhenNoReferenceAnymore [ | traveler | @@ -129,7 +130,7 @@ ObjectTravelerTests >> testIsAtEndWhenNoReferenceAnymore [ traveler moveToNextReference should be: false ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testLeaveNodeAction [ | traversed traveler leftNodes | @@ -143,7 +144,7 @@ ObjectTravelerTests >> testLeaveNodeAction [ leftNodes should equalInOrder: {10@20. 30@40 } ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testLeaveNodeActionWhenExtraNodeLeft [ | traveler leftNodes | @@ -156,7 +157,7 @@ ObjectTravelerTests >> testLeaveNodeActionWhenExtraNodeLeft [ leftNodes should equalInOrder: {70@80. 10@20. 30@40. 50@60 } ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testNextReferenceAtTheEndOfFirstNode [ | traveler | @@ -169,7 +170,7 @@ ObjectTravelerTests >> testNextReferenceAtTheEndOfFirstNode [ traveler nextReference should equal: 40 ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testNextReferenceAtTheStart [ | traveler | @@ -178,7 +179,7 @@ ObjectTravelerTests >> testNextReferenceAtTheStart [ traveler nextReference should equal: 20 ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testNextReferenceInDepth [ | traveler | @@ -189,7 +190,7 @@ ObjectTravelerTests >> testNextReferenceInDepth [ traveler nextReference should equal: 20 ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testNextReferenceOnEmptyObject [ | traveler | @@ -198,7 +199,7 @@ ObjectTravelerTests >> testNextReferenceOnEmptyObject [ traveler moveToNextReference should be: false ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testReferencesEnumeration [ | traversed traveler | @@ -210,7 +211,7 @@ ObjectTravelerTests >> testReferencesEnumeration [ traversed should equal: #(10 20) ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testReferencesEnumerationWhenGraphWithLoops [ | traversed traveler repeatedObject source | @@ -224,7 +225,7 @@ ObjectTravelerTests >> testReferencesEnumerationWhenGraphWithLoops [ traversed should equal: {repeatedObject. source value. 20. 10. repeatedObject. 40} ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testReplacingReference [ | traveler repeatedObject source | @@ -239,7 +240,7 @@ ObjectTravelerTests >> testReplacingReference [ source value key should be: repeatedObject ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testReplacingReferenceInArray [ | traveler source | @@ -253,7 +254,7 @@ ObjectTravelerTests >> testReplacingReferenceInArray [ source should equal: #(1 #newReference 3) ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testReplacingReferenceInVariableClassWithInstVars [ | traveler source | @@ -272,7 +273,7 @@ ObjectTravelerTests >> testReplacingReferenceInVariableClassWithInstVars [ source selector should be: #newSelector ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testReplacingReferenceWhenExtraNodeVisitingIsPlanned [ | traveler source | @@ -287,7 +288,7 @@ ObjectTravelerTests >> testReplacingReferenceWhenExtraNodeVisitingIsPlanned [ traveler nextReference should equal: 4. ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testShouldNotTraverseSameObjectTwice [ | traveler repeatedObject | @@ -302,7 +303,7 @@ ObjectTravelerTests >> testShouldNotTraverseSameObjectTwice [ traveler nextReference should equal: 40. ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testShouldNotTraverseSourceObjectTwice [ | traveler source | @@ -318,7 +319,7 @@ ObjectTravelerTests >> testShouldNotTraverseSourceObjectTwice [ traveler nextReference should equal: 40. ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testShouldSkipSymbolsStructure [ | traveler | @@ -330,7 +331,7 @@ ObjectTravelerTests >> testShouldSkipSymbolsStructure [ traveler nextReference should be: 2. ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testSkipedObjectShouldNotBeTraversedDeeply [ | traveler skipedObject | @@ -344,7 +345,7 @@ ObjectTravelerTests >> testSkipedObjectShouldNotBeTraversedDeeply [ traveler nextReference should equal: 50 ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testTraverseArray [ | traveler | @@ -356,7 +357,7 @@ ObjectTravelerTests >> testTraverseArray [ traveler nextReference should be: 3 ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testTraverseBlockClosure [ | traveler block refs | @@ -373,7 +374,7 @@ ObjectTravelerTests >> testTraverseBlockClosure [ refs size should be < 46 ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testTraverseObjectWhereFirstDeepReferenceIsSkipped [ | traveler nodeToSkip | @@ -384,7 +385,7 @@ ObjectTravelerTests >> testTraverseObjectWhereFirstDeepReferenceIsSkipped [ traveler collectReferences should equal: {{nodeToSkip. 4 }. nodeToSkip. 4 }. ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testTraverseOnlyFilteredNodes [ | traveler nodeToSkip | @@ -394,7 +395,7 @@ ObjectTravelerTests >> testTraverseOnlyFilteredNodes [ traveler collectReferences should equal: {nodeToSkip. 40@50. 40. 50}. ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testTraverseOnlyFilteredNodes2 [ | traveler rect | @@ -404,7 +405,7 @@ ObjectTravelerTests >> testTraverseOnlyFilteredNodes2 [ traveler collectReferences should equal: {rect. 5@6. 5. 6}. ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testTraverseVariableClassWithInstVars [ | traveler | @@ -418,7 +419,7 @@ ObjectTravelerTests >> testTraverseVariableClassWithInstVars [ ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testVisitingExtaNodeAtEndOfExistingNodeWhenFirstIsSkipped [ | traveler nodes source | @@ -434,7 +435,7 @@ ObjectTravelerTests >> testVisitingExtaNodeAtEndOfExistingNodeWhenFirstIsSkipped nodes should equalInOrder: {1@2. 3@4. 8. 9. 3. 4} ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testVisitingExtraEmptyNode [ | traveler nodes | @@ -448,7 +449,7 @@ ObjectTravelerTests >> testVisitingExtraEmptyNode [ nodes should equalInOrder: {1@2. 3@4. 5@6. 1. 2. 3. 4. 5. 6} ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testVisitingExtraNode [ | traveler nodes | @@ -462,7 +463,7 @@ ObjectTravelerTests >> testVisitingExtraNode [ nodes should equalInOrder: {1@2. 3@4. 8. 9. 5@6. 1. 2. 3. 4. 5. 6} ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testVisitingExtraNodeAtEndOfExistingNode [ | traveler nodes | @@ -476,7 +477,7 @@ ObjectTravelerTests >> testVisitingExtraNodeAtEndOfExistingNode [ nodes should equalInOrder: {1@2. 3@4. 8. 9. 1. 2. 3. 4} ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testVisitingExtraNodeInsideAnotherExtraNode [ | traveler nodes source | @@ -493,7 +494,7 @@ ObjectTravelerTests >> testVisitingExtraNodeInsideAnotherExtraNode [ nodes should equalInOrder: {1@2. 3@4. 7@8. 9@10. 11. 12. 7. 8. 9. 10. 5@6. 1. 2. 3. 4. 5. 6} ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testVisitingExtraNodeShouldNotChangeCurrentNodeAndReference [ | traveler root | @@ -511,7 +512,7 @@ ObjectTravelerTests >> testVisitingExtraNodeShouldNotChangeCurrentNodeAndReferen traveler currentReference should equal: 3@4 ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testVisitingExtraNodeTwice [ | traversed traveler anotherObject | traversed := OrderedCollection new. @@ -526,7 +527,7 @@ ObjectTravelerTests >> testVisitingExtraNodeTwice [ traversed should equal: {10 . 20 . 30 . 50} ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testVisitingExtraNodeWhenItIsForcedBeforeEnumeration [ | traveler nodes | @@ -540,7 +541,7 @@ ObjectTravelerTests >> testVisitingExtraNodeWhenItIsForcedBeforeEnumeration [ nodes should equalInOrder: {1@2. 3@4. 5@6. 1. 2. 3. 4. 5. 6. 7. 8} ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testVisitingExtraNodeWhichWasAlreadyTraversed [ | traversed traveler anotherObject | traversed := OrderedCollection new. @@ -555,7 +556,7 @@ ObjectTravelerTests >> testVisitingExtraNodeWhichWasAlreadyTraversed [ traversed should equal: {10 . 20} ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testVisitingThreeExtraNodes [ | traveler nodes | @@ -570,7 +571,7 @@ ObjectTravelerTests >> testVisitingThreeExtraNodes [ nodes should equalInOrder: {1@2. 3@4. 8. 9. 10. 11. 12. 13. 5@6. 1. 2. 3. 4. 5. 6} ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testVisitingThreeExtraNodesWhereLastTwoAreSame [ | traversed traveler anotherObject | traversed := OrderedCollection new. @@ -587,7 +588,7 @@ ObjectTravelerTests >> testVisitingThreeExtraNodesWhereLastTwoAreSame [ traversed should equal: {10 . 20 . 5. 6. 30 . 50} ] -{ #category : #tests } +{ #category : 'tests' } ObjectTravelerTests >> testVisitingTwoExtraNodes [ | traveler nodes | diff --git a/ObjectTravel-Tests/package.st b/ObjectTravel-Tests/package.st index 984f78e..9adc1b7 100644 --- a/ObjectTravel-Tests/package.st +++ b/ObjectTravel-Tests/package.st @@ -1 +1 @@ -Package { #name : #'ObjectTravel-Tests' } +Package { #name : 'ObjectTravel-Tests' } diff --git a/ObjectTravel/Bitmap.extension.st b/ObjectTravel/Bitmap.extension.st index 1a50550..8a34686 100644 --- a/ObjectTravel/Bitmap.extension.st +++ b/ObjectTravel/Bitmap.extension.st @@ -1,6 +1,6 @@ -Extension { #name : #Bitmap } +Extension { #name : 'Bitmap' } -{ #category : #'*ObjectTravel' } +{ #category : '*ObjectTravel' } Bitmap >> travelGuide [ ^EmptyObjectTravelGuide ] diff --git a/ObjectTravel/ByteArray.extension.st b/ObjectTravel/ByteArray.extension.st index 6a94333..9a9105b 100644 --- a/ObjectTravel/ByteArray.extension.st +++ b/ObjectTravel/ByteArray.extension.st @@ -1,6 +1,6 @@ -Extension { #name : #ByteArray } +Extension { #name : 'ByteArray' } -{ #category : #'*ObjectTravel' } +{ #category : '*ObjectTravel' } ByteArray >> travelGuide [ ^EmptyObjectTravelGuide ] diff --git a/ObjectTravel/CompiledCode.extension.st b/ObjectTravel/CompiledCode.extension.st index d5ac8a4..35fbd25 100644 --- a/ObjectTravel/CompiledCode.extension.st +++ b/ObjectTravel/CompiledCode.extension.st @@ -1,6 +1,6 @@ -Extension { #name : #CompiledCode } +Extension { #name : 'CompiledCode' } -{ #category : #'*ObjectTravel' } +{ #category : '*ObjectTravel' } CompiledCode >> travelGuide [ ^CompiledCodeTravelGuide diff --git a/ObjectTravel/CompiledCodeTravelGuide.class.st b/ObjectTravel/CompiledCodeTravelGuide.class.st index 815b20a..c450697 100644 --- a/ObjectTravel/CompiledCodeTravelGuide.class.st +++ b/ObjectTravel/CompiledCodeTravelGuide.class.st @@ -2,27 +2,28 @@ I am special mirror to discover CompiledMethod references inside method literals " Class { - #name : #CompiledCodeTravelGuide, - #superclass : #ObjectTravelGuide, - #category : #ObjectTravel + #name : 'CompiledCodeTravelGuide', + #superclass : 'ObjectTravelGuide', + #category : 'ObjectTravel', + #package : 'ObjectTravel' } -{ #category : #navigation } +{ #category : 'navigation' } CompiledCodeTravelGuide class >> isNode: aCompiledMethod hasLastReferenceAt: referenceIndex [ ^referenceIndex >= aCompiledMethod numLiterals ] -{ #category : #navigation } +{ #category : 'navigation' } CompiledCodeTravelGuide class >> isNodeEmpty: aCompiledMethod [ ^aCompiledMethod numLiterals = 0 ] -{ #category : #navigation } +{ #category : 'navigation' } CompiledCodeTravelGuide class >> referenceOf: aCompiledMethod atIndex: referenceIndex [ ^aCompiledMethod literalAt: referenceIndex ] -{ #category : #operations } +{ #category : 'operations' } CompiledCodeTravelGuide class >> replaceReferenceOf: aCompiledMethod at: referenceIndex with: replacementObject [ aCompiledMethod literalAt: referenceIndex put: replacementObject diff --git a/ObjectTravel/EmptyObjectTravelGuide.class.st b/ObjectTravel/EmptyObjectTravelGuide.class.st index c740285..d9f9c5a 100644 --- a/ObjectTravel/EmptyObjectTravelGuide.class.st +++ b/ObjectTravel/EmptyObjectTravelGuide.class.st @@ -2,27 +2,28 @@ I am mirror for objects which structure should not be traversable. Such objects I call empty " Class { - #name : #EmptyObjectTravelGuide, - #superclass : #ObjectTravelGuide, - #category : 'ObjectTravel' + #name : 'EmptyObjectTravelGuide', + #superclass : 'ObjectTravelGuide', + #category : 'ObjectTravel', + #package : 'ObjectTravel' } -{ #category : #navigation } +{ #category : 'navigation' } EmptyObjectTravelGuide class >> isNode: anObject hasLastReferenceAt: referenceIndex [ ^true ] -{ #category : #navigation } +{ #category : 'navigation' } EmptyObjectTravelGuide class >> isNodeEmpty: anObject [ ^true ] -{ #category : #navigation } +{ #category : 'navigation' } EmptyObjectTravelGuide class >> referenceOf: anObject atIndex: referenceIndex [ self error: 'empty object has no references!' ] -{ #category : #operations } +{ #category : 'operations' } EmptyObjectTravelGuide class >> replaceReferenceOf: anObject at: referenceIndex with: replacementObject [ self error: 'empty object dont have references' diff --git a/ObjectTravel/Number.extension.st b/ObjectTravel/Number.extension.st index 4edc596..3c11f8d 100644 --- a/ObjectTravel/Number.extension.st +++ b/ObjectTravel/Number.extension.st @@ -1,6 +1,6 @@ -Extension { #name : #Number } +Extension { #name : 'Number' } -{ #category : #'*ObjectTravel' } +{ #category : '*ObjectTravel' } Number >> travelGuide [ ^EmptyObjectTravelGuide ] diff --git a/ObjectTravel/Object.extension.st b/ObjectTravel/Object.extension.st index c246a42..78b4886 100644 --- a/ObjectTravel/Object.extension.st +++ b/ObjectTravel/Object.extension.st @@ -1,6 +1,6 @@ -Extension { #name : #Object } +Extension { #name : 'Object' } -{ #category : #'*ObjectTravel' } +{ #category : '*ObjectTravel' } Object >> travelGuide [ ^OrdinaryObjectTravelGuide ] diff --git a/ObjectTravel/ObjectTravelGuide.class.st b/ObjectTravel/ObjectTravelGuide.class.st index 9cb62f2..a30467d 100644 --- a/ObjectTravel/ObjectTravelGuide.class.st +++ b/ObjectTravel/ObjectTravelGuide.class.st @@ -2,39 +2,40 @@ I provide mirrors hierarchy to discover object references " Class { - #name : #ObjectTravelGuide, - #superclass : #Object, - #category : 'ObjectTravel' + #name : 'ObjectTravelGuide', + #superclass : 'Object', + #category : 'ObjectTravel', + #package : 'ObjectTravel' } -{ #category : #mirrors } +{ #category : 'mirrors' } ObjectTravelGuide class >> classOf: anObject [ self primitiveFailed ] -{ #category : #navigation } +{ #category : 'navigation' } ObjectTravelGuide class >> isNode: anObject hasLastReferenceAt: referenceIndex [ self subclassResponsibility ] -{ #category : #navigation } +{ #category : 'navigation' } ObjectTravelGuide class >> isNodeEmpty: anObject [ self subclassResponsibility ] -{ #category : #navigation } +{ #category : 'navigation' } ObjectTravelGuide class >> referenceOf: anObject atIndex: referenceIndex [ self subclassResponsibility ] -{ #category : #operations } +{ #category : 'operations' } ObjectTravelGuide class >> replaceReferenceOf: anObject at: referenceIndex with: replacementObject [ self subclassResponsibility ] -{ #category : #mirrors } +{ #category : 'mirrors' } ObjectTravelGuide class >> sizeOf: anObject [ diff --git a/ObjectTravel/ObjectTraveler.class.st b/ObjectTravel/ObjectTraveler.class.st index f223998..0115f56 100644 --- a/ObjectTravel/ObjectTraveler.class.st +++ b/ObjectTravel/ObjectTraveler.class.st @@ -34,8 +34,8 @@ Also I can replace references with new values: ""nodesFilter"" is predicate block which can be used to skip nodes in object graph. " Class { - #name : #ObjectTraveler, - #superclass : #Object, + #name : 'ObjectTraveler', + #superclass : 'Object', #instVars : [ 'pathNodes', 'path', @@ -47,24 +47,25 @@ Class { 'depthRouteForced', 'leaveNodeAction' ], - #category : 'ObjectTravel' + #category : 'ObjectTravel', + #package : 'ObjectTravel' } -{ #category : #'instance creation' } +{ #category : 'instance creation' } ObjectTraveler class >> on: anObject [ ^self new startOn: anObject ] -{ #category : #'instance creation' } +{ #category : 'instance creation' } ObjectTraveler class >> on: anObject where: nodesFilterBlock [ ^(self on: anObject) traverseOnly: nodesFilterBlock ] -{ #category : #navigation } +{ #category : 'navigation' } ObjectTraveler >> alsoLookAt: anotherObject [ self deprecated: 'Use atNextStepVisit: instead' @@ -74,7 +75,7 @@ ObjectTraveler >> alsoLookAt: anotherObject [ self atNextStepVisit: anotherObject ] -{ #category : #navigation } +{ #category : 'navigation' } ObjectTraveler >> atNextStepVisit: newObject [ (self isNodeEmpty: newObject) ifTrue: [ ^self ]. (self isTraversed: newObject) ifTrue: [ ^self ]. @@ -93,7 +94,7 @@ ObjectTraveler >> atNextStepVisit: newObject [ self visitLastExtraNodeInDeclaredOrder. "it could be removed in future" ] -{ #category : #operations } +{ #category : 'operations' } ObjectTraveler >> collectReferences [ | result | @@ -104,7 +105,7 @@ ObjectTraveler >> collectReferences [ ^result ] -{ #category : #operations } +{ #category : 'operations' } ObjectTraveler >> copyObject [ | activeNode copies nodeCopy copy startCopy | @@ -125,7 +126,7 @@ ObjectTraveler >> copyObject [ ^startCopy ] -{ #category : #operations } +{ #category : 'operations' } ObjectTraveler >> countReferences [ | count | @@ -136,27 +137,27 @@ ObjectTraveler >> countReferences [ ^count ] -{ #category : #navigation } +{ #category : 'navigation' } ObjectTraveler >> currentNode [ ^currentNode ] -{ #category : #accessing } +{ #category : 'accessing' } ObjectTraveler >> currentNodeIndex [ ^pathNodes size ] -{ #category : #navigation } +{ #category : 'navigation' } ObjectTraveler >> currentReference [ ^currentReference ] -{ #category : #'private-navigation' } +{ #category : 'private-navigation' } ObjectTraveler >> currentReferenceIndex [ ^currentReferenceIndex ] -{ #category : #operations } +{ #category : 'operations' } ObjectTraveler >> findAllPathsTo: anObject [ | result | @@ -171,7 +172,7 @@ ObjectTraveler >> findAllPathsTo: anObject [ ^result ] -{ #category : #initialization } +{ #category : 'initialization' } ObjectTraveler >> initialize [ super initialize. @@ -184,43 +185,43 @@ ObjectTraveler >> initialize [ depthRouteForced := false ] -{ #category : #'private-testing' } +{ #category : 'private-testing' } ObjectTraveler >> isAtLastReferenceOfCurrentNode [ ^ self isNode: currentNode hasLastReferenceAt: currentReferenceIndex ] -{ #category : #testing } +{ #category : 'testing' } ObjectTraveler >> isAtStart [ ^currentReferenceIndex = 0 ] -{ #category : #'private-testing' } +{ #category : 'private-testing' } ObjectTraveler >> isCurrentReferenceEmpty [ ^self isNodeEmpty: currentReference ] -{ #category : #'private-testing' } +{ #category : 'private-testing' } ObjectTraveler >> isNode: anObject hasLastReferenceAt: referenceIndex [ ^anObject travelGuide isNode: anObject hasLastReferenceAt: referenceIndex ] -{ #category : #'private-testing' } +{ #category : 'private-testing' } ObjectTraveler >> isNodeEmpty: anObject [ ^ anObject travelGuide isNodeEmpty: anObject ] -{ #category : #testing } +{ #category : 'testing' } ObjectTraveler >> isTraversed: anObject [ ^(traversedObjects includes: anObject) or: [ nodesFilter notNil and: [(nodesFilter value: currentReference) not] ] ] -{ #category : #'private-navigation' } +{ #category : 'private-navigation' } ObjectTraveler >> moveBackInDepth [ | leftNode | @@ -231,7 +232,7 @@ ObjectTraveler >> moveBackInDepth [ leaveNodeAction ifNotNil: [ leaveNodeAction value: leftNode ] ] -{ #category : #'private-navigation' } +{ #category : 'private-navigation' } ObjectTraveler >> moveBreadthToFirstReference [ path atLast: 1 put: 1. @@ -239,7 +240,7 @@ ObjectTraveler >> moveBreadthToFirstReference [ currentReference := self referenceOf: currentNode atIndex: currentReferenceIndex ] -{ #category : #'private-navigation' } +{ #category : 'private-navigation' } ObjectTraveler >> moveBreadthToNextReference [ (self isAtLastReferenceOfCurrentNode) ifFalse: [ @@ -252,7 +253,7 @@ ObjectTraveler >> moveBreadthToNextReference [ ^false ] -{ #category : #'private-navigation' } +{ #category : 'private-navigation' } ObjectTraveler >> moveDepthToNextReference [ | newNode | @@ -281,7 +282,7 @@ ObjectTraveler >> moveDepthToNextReference [ ^true ] -{ #category : #navigation } +{ #category : 'navigation' } ObjectTraveler >> moveToNextReference [ (self isAtStart and: [self isNodeEmpty: currentNode ]) ifTrue: [ ^false ]. depthRouteForced ifTrue: [ @@ -296,58 +297,58 @@ ObjectTraveler >> moveToNextReference [ self moveDepthToNextReference] ] -{ #category : #navigation } +{ #category : 'navigation' } ObjectTraveler >> moveToNextReference: steps [ steps timesRepeat: [ self moveToNextReference ifFalse: [ ^false ] ]. ^true ] -{ #category : #navigation } +{ #category : 'navigation' } ObjectTraveler >> nextReference [ ^self nextReferenceIfEnd: [ self error: 'travel is finished' ] ] -{ #category : #navigation } +{ #category : 'navigation' } ObjectTraveler >> nextReferenceIfEnd: endBlock [ ^self moveToNextReference ifTrue: [ currentReference ] ifFalse: endBlock ] -{ #category : #accessing } +{ #category : 'accessing' } ObjectTraveler >> nodeAt: pathNodesIndex ifAbsent: absentBlock [ ^pathNodes at: pathNodesIndex ifAbsent: absentBlock ] -{ #category : #accessing } +{ #category : 'accessing' } ObjectTraveler >> path [ ^ path ] -{ #category : #accessing } +{ #category : 'accessing' } ObjectTraveler >> path: anObject [ path := anObject ] -{ #category : #accessing } +{ #category : 'accessing' } ObjectTraveler >> pathNodes [ ^ pathNodes ] -{ #category : #accessing } +{ #category : 'accessing' } ObjectTraveler >> pathNodes: anObject [ pathNodes := anObject ] -{ #category : #'private-navigation' } +{ #category : 'private-navigation' } ObjectTraveler >> referenceOf: anObject atIndex: referenceIndex [ ^anObject travelGuide referenceOf: anObject atIndex: referenceIndex ] -{ #category : #operations } +{ #category : 'operations' } ObjectTraveler >> referencesDo: aBlock [ [self moveToNextReference] whileTrue: [ @@ -355,7 +356,7 @@ ObjectTraveler >> referencesDo: aBlock [ ] ] -{ #category : #operations } +{ #category : 'operations' } ObjectTraveler >> referencesDo: aBlock until: conditionBlock [ [self moveToNextReference and: [(conditionBlock value: currentReference) not]] whileTrue: [ @@ -363,38 +364,38 @@ ObjectTraveler >> referencesDo: aBlock until: conditionBlock [ ] ] -{ #category : #operations } +{ #category : 'operations' } ObjectTraveler >> replaceCurrentReferenceWith: anObject [ self replaceReferenceOf: currentNode at: currentReferenceIndex with: anObject ] -{ #category : #'private-operations' } +{ #category : 'private-operations' } ObjectTraveler >> replaceReferenceOf: anObject at: referenceIndex with: replacementObject [ anObject travelGuide replaceReferenceOf: anObject at: referenceIndex with: replacementObject ] -{ #category : #operations } +{ #category : 'operations' } ObjectTraveler >> skip: anObject [ "Do not traverse given anObject. It could be only visited as sombody reference without deep traversal" traversedObjects add: anObject ] -{ #category : #operations } +{ #category : 'operations' } ObjectTraveler >> skipAll: aCollection [ "Do not traverse all aCollection items. They could be only visited as sombody references without deep traversal" traversedObjects addAll: aCollection ] -{ #category : #navigation } +{ #category : 'navigation' } ObjectTraveler >> startNode [ ^pathNodes first ] -{ #category : #initialization } +{ #category : 'initialization' } ObjectTraveler >> startOn: anObject [ pathNodes add: anObject. @@ -402,24 +403,24 @@ ObjectTraveler >> startOn: anObject [ currentNode := anObject ] -{ #category : #operations } +{ #category : 'operations' } ObjectTraveler >> traverseOnly: predicateBlock [ nodesFilter := predicateBlock ] -{ #category : #accessing } +{ #category : 'accessing' } ObjectTraveler >> traversedObjects [ ^ traversedObjects ] -{ #category : #accessing } +{ #category : 'accessing' } ObjectTraveler >> traversedObjects: anObject [ traversedObjects := anObject ] -{ #category : #'private-navigation' } +{ #category : 'private-navigation' } ObjectTraveler >> visitLastExtraNodeInDeclaredOrder [ | lastExtraNode previousRefIndex i | lastExtraNode := pathNodes last. @@ -434,7 +435,7 @@ ObjectTraveler >> visitLastExtraNodeInDeclaredOrder [ pathNodes at: i put: lastExtraNode ] -{ #category : #'private-testing' } +{ #category : 'private-testing' } ObjectTraveler >> wantsTraverseCurrentReference [ self isCurrentReferenceEmpty ifTrue: [ ^false ]. @@ -442,7 +443,7 @@ ObjectTraveler >> wantsTraverseCurrentReference [ ^self isCurrentReferenceEmpty not and: [ (self isTraversed: currentReference) not ] ] -{ #category : #navigation } +{ #category : 'navigation' } ObjectTraveler >> whenLeaveNodeDo: actionBlockWithNode [ leaveNodeAction := actionBlockWithNode ] diff --git a/ObjectTravel/OrdinaryObjectTravelGuide.class.st b/ObjectTravel/OrdinaryObjectTravelGuide.class.st index 22a5bc7..4904f7a 100644 --- a/ObjectTravel/OrdinaryObjectTravelGuide.class.st +++ b/ObjectTravel/OrdinaryObjectTravelGuide.class.st @@ -2,24 +2,25 @@ I am mirror for ordinary objects which structure can be traversed generally " Class { - #name : #OrdinaryObjectTravelGuide, - #superclass : #ObjectTravelGuide, - #category : 'ObjectTravel' + #name : 'OrdinaryObjectTravelGuide', + #superclass : 'ObjectTravelGuide', + #category : 'ObjectTravel', + #package : 'ObjectTravel' } -{ #category : #navigation } +{ #category : 'navigation' } OrdinaryObjectTravelGuide class >> isNode: anObject hasLastReferenceAt: referenceIndex [ ^referenceIndex >= ((self classOf: anObject) instSize + (self sizeOf: anObject)) ] -{ #category : #navigation } +{ #category : 'navigation' } OrdinaryObjectTravelGuide class >> isNodeEmpty: anObject [ ^(self classOf: anObject) instSize + (self sizeOf: anObject) = 0 ] -{ #category : #navigation } +{ #category : 'navigation' } OrdinaryObjectTravelGuide class >> referenceOf: anObject atIndex: referenceIndex [ | instSize basicSize | @@ -34,7 +35,7 @@ OrdinaryObjectTravelGuide class >> referenceOf: anObject atIndex: referenceIndex ifFalse: [ anObject basicAt: referenceIndex - instSize ] ] -{ #category : #operations } +{ #category : 'operations' } OrdinaryObjectTravelGuide class >> replaceReferenceOf: anObject at: referenceIndex with: replacementObject [ | instSize basicSize | diff --git a/ObjectTravel/String.extension.st b/ObjectTravel/String.extension.st index 5d558ef..4816e8b 100644 --- a/ObjectTravel/String.extension.st +++ b/ObjectTravel/String.extension.st @@ -1,6 +1,6 @@ -Extension { #name : #String } +Extension { #name : 'String' } -{ #category : #'*ObjectTravel' } +{ #category : '*ObjectTravel' } String >> travelGuide [ ^EmptyObjectTravelGuide ] diff --git a/ObjectTravel/package.st b/ObjectTravel/package.st index 8653fdb..4704f6f 100644 --- a/ObjectTravel/package.st +++ b/ObjectTravel/package.st @@ -1 +1 @@ -Package { #name : #ObjectTravel } +Package { #name : 'ObjectTravel' }