class ChartPrinter
Public Class Methods
new()
click to toggle source
# File lib/chord_finder/chart_printer.rb, line 2 def initialize; end
Public Instance Methods
build_output(position, open_notes)
click to toggle source
# File lib/chord_finder/chart_printer.rb, line 9 def build_output(position, open_notes) output = "" fret_nums = position.fret_nums lowest_fret = position.lowest_fret_num highest_fret = position.highest_fret_num first_row = fret_nums.map do |fret_num| case fret_num when -1 then "X" when 0 then "O" else " " end end fret_line = "-----------" output << " #{first_row.join(" ")}\n" output << " #{fret_line}\n" if lowest_fret < 3 (1..highest_fret).each do |fret_num| row = (0..5).map { |string_num| fret_nums[string_num] == fret_num ? "●" : "|" }.join(" ") output << " #{row}\n" output << " #{fret_line}\n" end else (lowest_fret..highest_fret).each do |fret_num| left_char = "#{fret_num == lowest_fret ? lowest_fret : " "}" row = (0..5).map { |string_num| fret_nums[string_num] == fret_num ? "●" : "|" }.join(" ") output << "#{left_char}#{row}\n" output << " #{fret_line}\n" end end output << " #{open_notes.join(" ")}\n" output << " #{position.chord.name} \n\n" output end
call(position, open_notes)
click to toggle source
# File lib/chord_finder/chart_printer.rb, line 4 def call(position, open_notes) output = build_output(position, open_notes) puts output end