In Metacello there are more than one way to "visit specs":
- raw specs - merged specs - specs by section - resolved specs - there are more
If you are reasoning about the packages visible for a particular combination of attributes (#common, #pharo, etc.) then you are interested in the 'merged specs'.
If you are interested in looking at the individual statements that are composed into the merged specs, then you need to look at the raw specs, again against a particular combination of attributes.
If you are editting a spec or interested in extracting the list of all packages referenced independent of attribute, then you need to look at the specs by section ... in which case you have the choice of looking at the raw specs or merged specs for each section visited. You also probably need to control whether or not imports are followed or not.
If you are interested in knowing the exact package version and repository that a spec resolves to, then you need to look at resolved specs against a particular combination of attributes.
So I guess I need to know a little bit more about what you are thinking when you say "visitor on metacello spec."
Dale
I see. But when I close my eyes and think about the metacello domain. I see trees of projects baseline, versions packages required packages the fact that the information is merged, resolvedâ¦. should give back trees and I would like to be able to visit these structures so that we can build analysis such as snapcello on top. So probably that a visitor would have to be attached a strategy while navigating. Stef