Frustration got me to throw together a few abstractions today to make easier to deal with [trigger], [pack], and [unpack], it allows you to add or delete inlets anywhere, not just at the end.
But as I am getting ready to upload them I am finding myself stuck on the final details, mainly how to deal with removed outlets/inlets. Should I just delete the connection to that outlet/inlet or should I shift all subsequent connections too accommodate the decreased number or add a shift operator like < or > to specify which direction you shift the cables? I sort of think just let simple logic win, connection stays connected to outlet/inlet # even if you delete it, if you delete outlet 3 the connections too outlet three will now be connected the old outlet 4 since it is now #3 and the old connections to #4 will be connected as well to the new #3, let the user decide after the fact since shift-click cable swapping and deleting is easy enough and adding in shift operators could just confuse things since stacking them could get confusing quickly?
I also made abstractions for [route] and [select], as of now they just keep the right inlet connected instead of shifting that connection to the left by how ever many new outlets are added. I would like to add the ability to insert and delete outlets to these since it can help to keep patches neater without a whole lot of cable swapping but I can not think of a reasonable way to signify removing or adding an outlet since anything could be a valid argument for [route] and [select]. Open to suggestions here, perhaps just stick with the caps convention of the other objects and accept that it will not work for all situations?
What is the consensus? Is there one?
Also, has no one ever made these? They were simple enough and seem obvious, but I can not find such a thing. I really feel like I must be reinventing the wheel.