Class: StableMatching::Member

Inherits:
Object
  • Object
show all
Defined in:
lib/stable-matching/member.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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_fromObject (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

#nameObject (readonly)

Returns the value of attribute name.



8
9
10
# File 'lib/stable-matching/member.rb', line 8

def name
  @name
end

#preference_listObject



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_fromObject (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

Returns:

  • (Boolean)


38
39
40
# File 'lib/stable-matching/member.rb', line 38

def accepted_proposal?
  !current_proposer.nil?
end

#current_acceptorObject



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_proposerObject



28
29
30
# File 'lib/stable-matching/member.rb', line 28

def current_proposer
  @accepted_proposal_from
end

#first_preferenceObject



59
60
61
# File 'lib/stable-matching/member.rb', line 59

def first_preference
  preference_list.first
end

#last_preferenceObject



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_preferenceObject



63
64
65
# File 'lib/stable-matching/member.rb', line 63

def second_preference
  preference_list[1]
end

#to_sObject



16
17
18
# File 'lib/stable-matching/member.rb', line 16

def to_s
  name
end

#would_prefer?(new_proposer) ⇒ Boolean

Returns:

  • (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