Skip to content

Instantly share code, notes, and snippets.

@elrayle
Last active December 9, 2015 14:11
Show Gist options
  • Save elrayle/b62003b432e0722c8c72 to your computer and use it in GitHub Desktop.
Save elrayle/b62003b432e0722c8c72 to your computer and use it in GitHub Desktop.
ordered_members vs. members and their interactions
# How do ordered_members and members behave and interact
# Setup
col1 = Hydra::Works::Collection.new(id: 'c1')
wrk1 = Hydra::Works::Work.new(id: 'w1')
wrk2 = Hydra::Works::Work.new(id: 'w2')
wrk3 = Hydra::Works::Work.new(id: 'w3')
wrk4 = Hydra::Works::Work.new(id: 'w4')
# 1. adding to members does NOT add to ordered members
col1.members << wrk1
col1.members.size # => 1 -- w1
Array(col1.ordered_members).size # => 0
# 2. adding to ordered_members does add to members
col1.ordered_members << wrk4
col1.members.size # => 2 -- w1, w4 (order unimportant)
Array(col1.ordered_members).size # => 1 -- w4
# 3. adding the same object again to ordered_members does NOT add to members
col1.ordered_members << wrk4
col1.members.size # => 2 -- w1, w4 (order unimportant)
Array(col1.ordered_members).size # => 2 -- w4, w4 (precise order)
# add a few more to work with for deletes
col1.ordered_members << wrk2
col1.ordered_members << wrk3
col1.members.size # => 4 -- w1, w2, w3, w4 (order unimportant)
Array(col1.ordered_members).size # => 4 -- w4, w4, w2, w3 (precise order)
# 3. deleting from members does NOT effect ordered_members
col1.members.delete(wrk3)
col1.members.size # => 3 -- w1, w2, w4 (order unimportant)
Array(col1.ordered_members).size # => 4 -- w4, w4, w2, w3 (precise order)
# 4. deleting from ordered_members does NOT effect members
col1.ordered_members.delete_at(2)
col1.members.size # => 3 -- w1, w2, w4 (order unimportant)
Array(col1.ordered_members).size # => 2 -- w4, w4, w3 (precise order)
@tpendragon
Copy link

@scherztc
Copy link

scherztc commented Dec 3, 2015

What is a use case for a partial_ordered list?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment