Interesting, I do a similar thing for database upgrades - I extract related changes for a particular upgrade from the individual table descriptions, but they may express additional constraints with a "do this after that one", or "do this before that one". It looks like this:
[version 92 replace: itemtype enum('publication') not null default 'publication' with: flavour int(11) not null using (do before publication): # database upgrade code for this change # which relies on the old version of the 'publication' table ... ]
I resolve the ordering using an approach similar to japhy's solution above, but at each pass I look for both things that can happen first and things that can happen last; when all constraints are satisfied, anything else can go in the middle. (If constraints remain, and a pass through the data finds neither a new 'first' nor a new 'last', there is a dependency loop.)
Hugo
In reply to Re: Reconstructing List Order From Partial Subsets
by hv
in thread Reconstructing List Order From Partial Subsets
by QM
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |