/** * @param $input * @return Coordinate * @throws DebugException * @throws NoInputException * @throws ValidationException */ public function handle($input) { $input = trim($input); if (!$input) { throw new NoInputException(); } if ($this->inputValidation->isDebugValid($input)) { throw new DebugException(); } if (!$this->inputValidation->isValid($input)) { throw new ValidationException(); } $char = substr($input, 0, 1); $number = substr($input, 1); $row = AlphabetHelper::getPosition($char); $column = intval($number); return new Coordinate($row, $column); }
/** * @param $input * @return bool */ public function isValid($input) { $input = trim($input); $char = substr($input, 0, 1); $row = substr($input, 1); if ($this->isDebugValid($input)) { return true; } if (!AlphabetHelper::isInAlphabet($char)) { return false; } $column = AlphabetHelper::getPosition($char); if ($column < BattlefieldCreator::MIN_COLUMNS || $column > BattlefieldCreator::MAX_COLUMNS) { return false; } if (intval($row) < BattlefieldCreator::MIN_ROWS || intval($row) > BattlefieldCreator::MAX_ROWS) { return false; } return true; }