Module: Card::Name::All::Parts

Included in:
Card::Name::All
Defined in:
lib/card/name/all/parts.rb

Overview

Card methods for handling name parts, eg A and B are both parts of A+B

Instance Method Summary collapse

Instance Method Details

#left(*args) ⇒ Object



6
7
8
9
10
11
12
13
14
15
# File 'lib/card/name/all/parts.rb', line 6

def left *args
  case
  when simple?    then nil
  when superleft then superleft
  when name_is_changing? && name.to_name.trunk_name == name_before_act.to_name
    nil # prevent recursion when, eg, renaming A+B to A+B+C
  else
    Card.fetch name.left, *args
  end
end

#left_id=(cardish) ⇒ Object



37
38
39
# File 'lib/card/name/all/parts.rb', line 37

def left_id= cardish
  write_card_or_id :left_id, cardish
end

#left_or_new(args = {}) ⇒ Object



17
18
19
# File 'lib/card/name/all/parts.rb', line 17

def left_or_new args={}
  left(args) || Card.new(args.merge(name: name.left))
end

#right(*args) ⇒ Object



21
22
23
# File 'lib/card/name/all/parts.rb', line 21

def right *args
  Card.fetch(name.right, *args) unless simple?
end

#right_id=(cardish) ⇒ Object



33
34
35
# File 'lib/card/name/all/parts.rb', line 33

def right_id= cardish
  write_card_or_id :right_id, cardish
end

#tag(*args) ⇒ Object



29
30
31
# File 'lib/card/name/all/parts.rb', line 29

def tag *args
  simple? ? self : Card.fetch(name.right, *args)
end

#trunk(*args) ⇒ Object



25
26
27
# File 'lib/card/name/all/parts.rb', line 25

def trunk *args
  simple? ? self : left(*args)
end