Class: Tetsujin::Instrument::Guitar::Frets
- Inherits:
-
Object
- Object
- Tetsujin::Instrument::Guitar::Frets
- Extended by:
- Forwardable
- Defined in:
- lib/tetsujin/instrument/guitar/frets.rb
Instance Attribute Summary collapse
-
#frets ⇒ Object
readonly
Returns the value of attribute frets.
Instance Method Summary collapse
- #==(other) ⇒ Object
- #find_by_fret_number(fret_number) ⇒ Tetsujin::Instrument::Guitar::Fret
- #find_by_note(note) ⇒ Tetsujin::Instrument::Guitar::Fret
-
#initialize(frets:) ⇒ Frets
constructor
A new instance of Frets.
- #play!(note) ⇒ void
- #press!(fret_number) ⇒ void
- #release! ⇒ void
Constructor Details
#initialize(frets:) ⇒ Frets
Returns a new instance of Frets.
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
#frets ⇒ Object (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
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
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.
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.
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 |