# appending
parent_col.members = [gw1,col1] # => [gw1,col1]
parent_col.members << gw2 # => [gw1,col1,gw2]
parent_col.members << col1 # => [gw1,col1,gw2,col1]
# readers
parent_col.members # => [gw1,gw2,col1]
parent_col.collections # => [col1]
parent_col.works # => [gw1,gw2]
# moving
class Array
def move(from,to)
insert(to, delete_at(from))
end
end
parent_col.members = [gw1,col1,gw2,gw3,col2,col3] # => [gw1,col1,gw2,gw3,col2,col3]
parent_col.members.move(1,3) # => [gw1,gw2,gw3,col1,col2,col3]
parent_col.members.move(1,-2) # => [gw1,gw3,col1,col2,gw2,col3]
# deleting
parent_col.members = [col1,col2,col1,col3,col1] # => [col1,col2,col1,col3,col1]
parent_col.members.delete_at(1) # => [col1,col1,col3,col1]
parent_col.members = [col1,col2,col1,col3,col1] # => [col1,col2,col1,col3,col1]
parent_col.delete_all col1 # => [col2,col3]
parent_col.members = [col1,col2,col1,col3,col1] # => [col1,col2,col1,col3,col1]
parent_col.delete(col1) # => [col2,col1,col3,col1] # default to 1st occurrence
parent_col.members = [col1,col2,col1,col3,col1] # => [col1,col2,col1,col3,col1]
parent_col.delete(col1,2) # => [col1,col2,col3,col1] # 2nd occurrence
parent_col.members = [col1,col2,col1,col3,col1] # => [col1,col2,col1,col3,col1]
parent_col.delete(col1,-1) # => [col1,col2,col1,col3] # last occurrence
# get unique (set view of ordered list)
parent_col.members = [col1,col2,col1,col3,col1] # => [col1,col2,col1,col3,col1]
parent_col.members.uniq # => [col1,col2,col3]
That would simplify the API. I can't recall exactly why it wasn't all ordered. I would bet that @tpendragon would know.