def handle_savesgf(self, args): try: pathname = args[0] except IndexError: gtp_engine.report_bad_arguments() sgf_game = sgf.Sgf_game(self.board_size) root = sgf_game.get_root() root.set('KM', self.komi) root.set('AP', ("gomill", __version__)) sgf_game.set_date() if self.handicap is not None: root.set('HA', self.handicap) for arg in args[1:]: try: identifier, value = arg.split("=", 1) if not identifier.isalpha(): raise ValueError identifier = identifier.upper() value = value.replace("\\_", " ").replace("\\\\", "\\") except Exception: gtp_engine.report_bad_arguments() root.set_raw(identifier, sgf_grammar.escape_text(value)) sgf_moves.set_initial_position(sgf_game, self.history_base) for history_move in self.move_history: node = sgf_game.extend_main_sequence() node.set_move(history_move.colour, history_move.move) if history_move.comments is not None: node.set("C", history_move.comments) sgf_moves.indicate_first_player(sgf_game) try: self._save_file(pathname, sgf_game.serialise()) except EnvironmentError, e: raise GtpError("error writing file: %s" % e)
def test_set_initial_position(tc): board = ascii_boards.interpret_diagram(DIAGRAM1, 9) sgf_game = sgf.Sgf_game(9) sgf_moves.set_initial_position(sgf_game, board) root = sgf_game.get_root() tc.assertEqual(root.get("AB"), set([(0, 0), (1, 1), (4, 4)])) tc.assertEqual(root.get("AW"), set([(6, 5), (6, 6)])) tc.assertRaises(KeyError, root.get, 'AE')