Class: StableMatching::Member
- Inherits:
-
Object
- Object
- StableMatching::Member
- Defined in:
- lib/stable-matching/member.rb
Instance Attribute Summary collapse
-
#accepted_proposal_from ⇒ Object
readonly
Returns the value of attribute accepted_proposal_from.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
- #preference_list ⇒ Object
-
#received_proposals_from ⇒ Object
readonly
Returns the value of attribute received_proposals_from.
Instance Method Summary collapse
- #accept_proposal_from!(member) ⇒ Object
- #accepted_proposal? ⇒ Boolean
- #current_acceptor ⇒ Object
- #current_proposer ⇒ Object
- #first_preference ⇒ Object
-
#initialize(name) ⇒ Member
constructor
A new instance of Member.
- #last_preference ⇒ Object
- #reject!(member) ⇒ Object
- #second_preference ⇒ Object
- #to_s ⇒ Object
- #would_prefer?(new_proposer) ⇒ Boolean
Constructor Details
#initialize(name) ⇒ Member
Returns a new instance of Member.
11 12 13 14 |
# File 'lib/stable-matching/member.rb', line 11 def initialize(name) @name = name @accepted_proposal_from = nil end |
Instance Attribute Details
#accepted_proposal_from ⇒ Object (readonly)
Returns the value of attribute accepted_proposal_from.
8 9 10 |
# File 'lib/stable-matching/member.rb', line 8 def accepted_proposal_from @accepted_proposal_from end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
8 9 10 |
# File 'lib/stable-matching/member.rb', line 8 def name @name end |
#preference_list ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/stable-matching/member.rb', line 20 def preference_list if @preference_list.nil? raise "preference list not set for member: #{name}" end @preference_list end |
#received_proposals_from ⇒ Object (readonly)
Returns the value of attribute received_proposals_from.
8 9 10 |
# File 'lib/stable-matching/member.rb', line 8 def received_proposals_from @received_proposals_from end |
Instance Method Details
#accept_proposal_from!(member) ⇒ Object
47 48 49 |
# File 'lib/stable-matching/member.rb', line 47 def accept_proposal_from!(member) @accepted_proposal_from = member end |
#accepted_proposal? ⇒ Boolean
38 39 40 |
# File 'lib/stable-matching/member.rb', line 38 def accepted_proposal? !current_proposer.nil? end |
#current_acceptor ⇒ Object
32 33 34 35 36 |
# File 'lib/stable-matching/member.rb', line 32 def current_acceptor preference_list.detect do |member| member.accepted_proposal_from == self end end |
#current_proposer ⇒ Object
28 29 30 |
# File 'lib/stable-matching/member.rb', line 28 def current_proposer @accepted_proposal_from end |
#first_preference ⇒ Object
59 60 61 |
# File 'lib/stable-matching/member.rb', line 59 def first_preference preference_list.first end |
#last_preference ⇒ Object
67 68 69 |
# File 'lib/stable-matching/member.rb', line 67 def last_preference preference_list.last end |
#reject!(member) ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/stable-matching/member.rb', line 51 def reject!(member) @accepted_proposal_from = nil if current_proposer == member # Delete each member from the other member's preference list preference_list.delete(member) member.preference_list.delete(self) end |
#second_preference ⇒ Object
63 64 65 |
# File 'lib/stable-matching/member.rb', line 63 def second_preference preference_list[1] end |
#to_s ⇒ Object
16 17 18 |
# File 'lib/stable-matching/member.rb', line 16 def to_s name end |
#would_prefer?(new_proposer) ⇒ Boolean
42 43 44 45 |
# File 'lib/stable-matching/member.rb', line 42 def would_prefer?(new_proposer) return true unless accepted_proposal? preference_of(new_proposer) > preference_of(current_proposer) end |