Class: Tetsujin::Instrument::Guitar::Frets

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/tetsujin/instrument/guitar/frets.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(frets:) ⇒ Frets

Returns a new instance of Frets.

Parameters:

Raises:

  • (TypeError)


11
12
13
14
# File 'lib/tetsujin/instrument/guitar/frets.rb', line 11

def initialize(frets:)
  raise TypeError unless frets.all? { |fret| fret.is_a?(Tetsujin::Instrument::Guitar::Fret) }
  @frets = frets
end

Instance Attribute Details

#fretsObject (readonly)

Returns the value of attribute frets.



8
9
10
# File 'lib/tetsujin/instrument/guitar/frets.rb', line 8

def frets
  @frets
end

Instance Method Details

#==(other) ⇒ Object

Parameters:



17
18
19
20
21
22
23
24
25
# File 'lib/tetsujin/instrument/guitar/frets.rb', line 17

def ==(other)
  self_sorted = frets.sort do |a, b|
    [a.string_number, a.fret_number] <=> [b.string_number, b.fret_number]
  end
  other_sorted = other.frets.sort do |a, b|
    [a.string_number, a.fret_number] <=> [b.string_number, b.fret_number]
  end
  self_sorted == other_sorted
end

#find_by_fret_number(fret_number) ⇒ Tetsujin::Instrument::Guitar::Fret

Parameters:

  • fret_number (Integer)

    フレット番号

Returns:



46
47
48
# File 'lib/tetsujin/instrument/guitar/frets.rb', line 46

def find_by_fret_number(fret_number)
  frets.find { |fret| fret.fret_number == fret_number }
end

#find_by_note(note) ⇒ Tetsujin::Instrument::Guitar::Fret



52
53
54
# File 'lib/tetsujin/instrument/guitar/frets.rb', line 52

def find_by_note(note)
  frets.find { |fret| fret.note == note }
end

#play!(note) ⇒ void

This method returns an undefined value.

Parameters:



29
30
31
# File 'lib/tetsujin/instrument/guitar/frets.rb', line 29

def play!(note)
  find_by_note(note)&.press!
end

#press!(fret_number) ⇒ void

This method returns an undefined value.

Parameters:

  • fret_number (Integer)


35
36
37
# File 'lib/tetsujin/instrument/guitar/frets.rb', line 35

def press!(fret_number)
  find_by_fret_number(fret_number).press!
end

#release!void

This method returns an undefined value.



40
41
42
# File 'lib/tetsujin/instrument/guitar/frets.rb', line 40

def release!
  frets.each(&:release!)
end