[Ann] ObjectTravel. A tool to traverse object references
Hi. This is side project of my work on Seamess and RemoteDebuggingTools. You can load it by: Gofer it smalltalkhubUser: 'Pharo' project: 'ObjectTravel'; configuration; loadStable ObjectTravel is a tool to deeply traverse "native" references of given object through instance variables and "array contents". Usage is quite simple: traveler := ObjectTraveler on: (1@2 corner: 3@4). traveler referencesDo: [:eachRef | eachRed logCr]. Here is list of suitable methods: - collectReferences - countReferences - skip: anObject - traverseOnly: predicateBlock - copyObject - findAllPathsTo: targetObject - replaceCurrentReferenceWith: anObject Details are here http://dionisiydk.blogspot.fr/2016/07/objecttravel-tool-to-traverse-object.h... . Best regards, Denis
Hi Denis, Looks very cool, thank you very much for sharing! A couple of questions. Can you comment how (if) you've applied your ObjectTravel? Or some use cases you have in mind? Have you tried to implement travelling methods of the Composite design pattern with your package? Cheers, Hernán PS: It would be nice if this ANN goes also to the pharo-users mailing list. 2016-07-22 7:45 GMT-03:00 Denis Kudriashov <dionisiydk@gmail.com>:
Hi.
This is side project of my work on Seamess and RemoteDebuggingTools. You can load it by:
Gofer it smalltalkhubUser: 'Pharo' project: 'ObjectTravel'; configuration; loadStable
ObjectTravel is a tool to deeply traverse "native" references of given object through instance variables and "array contents".
Usage is quite simple:
traveler := ObjectTraveler on: (1@2 corner: 3@4). traveler referencesDo: [:eachRef | eachRed logCr].
Here is list of suitable methods:
- collectReferences - countReferences - skip: anObject - traverseOnly: predicateBlock - copyObject - findAllPathsTo: targetObject - replaceCurrentReferenceWith: anObject
Details are here http://dionisiydk.blogspot.fr/2016/07/objecttravel-tool-to-traverse-object.h... .
Best regards, Denis
Hi Herman. 2016-07-22 21:38 GMT+02:00 Hernán Morales Durand <hernan.morales@gmail.com>:
Hi Denis,
Looks very cool, thank you very much for sharing!
Thankl's.
A couple of questions. Can you comment how (if) you've applied your ObjectTravel? Or some use cases you have in mind? Have you tried to implement travelling methods of the Composite design pattern with your package?
This package is very low level. It is not supposed to provide domain specific objects navigation. For this purpose look at DeepTraverser project http://www.humane-assessment.com/blog/traversal-enabled-pharo-objects/. ObjectTravel implements streaming capabilities over *native* object references (inst vars, for example). Seamless uses it to decide how to transfer internal state of sent objects. It applies appropriate transfer strategy to each object reference. Theoretically Fuel could use ObjectTraveler instead of own traversal implementation.
participants (2)
-
Denis Kudriashov -
Hernán Morales Durand