class Golr::GameReader
Public Class Methods
from_string(multi_line_string)
click to toggle source
# File lib/golr/game_reader.rb, line 5 def self.from_string(multi_line_string) keys = [] row = 1 columns = count_columns(multi_line_string) multi_line_string.split(/\r?\n/).each do |line| keys |= keys_from_line(line, row) row += 1 end rows = row - 1 Game.new(columns, rows, keys) end
Private Class Methods
count_columns(multi_line_string)
click to toggle source
# File lib/golr/game_reader.rb, line 19 def self.count_columns(multi_line_string) first_line = multi_line_string.split(/\r\n?|\n/).first first_line.strip.bytesize - 2 # TODO: not entirely clear why this works even on Travis, while string.size did not end
keys_from_line(line, row)
click to toggle source
# File lib/golr/game_reader.rb, line 25 def self.keys_from_line(line, row) char_in_line = 1 keys_in_line = [] line.strip! line.gsub!('|','') line.each_char do |c| keys_in_line << Key.key(char_in_line, row) if c == 'o' char_in_line += 1 end keys_in_line end