module Sashite::CGN::Square

Constants

PATTERN

Public Class Methods

dump(io) click to toggle source
# File lib/sashite/cgn/square.rb, line 36
def self.dump io
  raise ArgumentError unless dumpable? io

  Attacked.dump(io.fetch(:'...attacked?')) + '@' +
  Occupied.dump(io.fetch(:'...occupied!')) + '+' +
  Area.dump(io.fetch(:area))
end
dumpable?(io) click to toggle source
# File lib/sashite/cgn/square.rb, line 28
def self.dumpable? io
  io.is_a?(Hash) &&
  io.keys.sort == %i(...attacked? ...occupied! area) &&
  Attacked.dumpable?(io.fetch(:'...attacked?')) &&
  Occupied.dumpable?(io.fetch(:'...occupied!')) &&
  Area.dumpable?(io.fetch(:'area'))
end
load(io) click to toggle source
# File lib/sashite/cgn/square.rb, line 14
def self.load io
  raise ArgumentError unless loadable? io

  attacked = Attacked.load io.split('@').fetch(0)
  occupied = Occupied.load io.split('@').fetch(1).split('+').fetch(0)
  area = Area.load io.split('+').fetch(1)

  {
    :"...attacked?" => attacked,
    :"...occupied!" => occupied,
    :"area" => area
  }
end
loadable?(io) click to toggle source
# File lib/sashite/cgn/square.rb, line 10
def self.loadable? io
  !!io.match("^#{PATTERN}$")
end