Esempio n. 1
0
 def test_timing(self):
     start = time.clock()
     match_fuzzy('zzz', [chr(c) * 4 for c in xrange(ord('a'), ord('z'))] * 400)
     end = time.clock()
     execution_time = end - start
     times_per_second = 1.0 / execution_time
     print times_per_second
Esempio n. 2
0
 def test_timing(self):
     start = time.clock()
     match_fuzzy('zzz',
                 [chr(c) * 4 for c in range(ord('a'), ord('z'))] * 400)
     end = time.clock()
     execution_time = end - start
     times_per_second = 1.0 / execution_time
     print(times_per_second)
Esempio n. 3
0
def resolve_map_name(room, map_name):
    valid_map_names = yield room.get_map_names()

    if not isinstance(map_name, unicode):
        map_name = unicode(map_name, 'utf_8')

    map_name_match = match_fuzzy(map_name, valid_map_names)

    if map_name_match is None:
        raise GenericError('Could not resolve map name {value#map_name} to valid map. Please try again.', map_name=map_name)

    defer.returnValue(map_name_match)
Esempio n. 4
0
    def execute(cls, spyd_server, room, client, command_string, arguments,
                raw_args):
        try:
            cn, mode_name, map_name = parse_arguments(raw_args)

            if mode_name is not None:
                valid_mode_names = list(gamemodes.keys())
                mode_name_match = match_fuzzy(str(mode_name), valid_mode_names)

                if mode_name_match is None:
                    raise GenericError(
                        'Could not resolve mode name {value#mode_name} to valid mode. Please try again.',
                        mode_name=mode_name)

                mode_name = mode_name_match

            if map_name is not None:
                map_name = yield resolve_map_name(room, map_name)

            duel_command_msg = duel_command.format(client=client)
            challenge_details = get_challenge_details(mode_name, map_name)

            if cn is not None:
                target = room.get_client(int(cn))
                if target is client:
                    raise GenericError("You can't duel yourself.")

                existing_challenge = get_existing_challenge(target, client)

                if existing_challenge is not None:
                    begin_duel(room, client, target, existing_challenge)

                else:
                    save_specific_challenge(client, target, mode_name,
                                            map_name)
                    target.send_server_message(
                        info(cn_chall_msg,
                             client=client,
                             challenge_details=challenge_details,
                             duel_command=duel_command_msg))
                    client.send_server_message(info(chall_sent_msg))

            else:
                save_general_challenge(client, mode_name, map_name)
                room.server_message(info(looking_msg,
                                         client=client,
                                         challenge_details=challenge_details,
                                         duel_command=duel_command_msg),
                                    exclude=(client, ))
                client.send_server_message(info(chall_sent_msg))
        except:
            traceback.print_exc()
Esempio n. 5
0
def resolve_map_name(room, map_name):
    valid_map_names = yield room.get_map_names()

    if not isinstance(map_name, str):
        map_name = str(map_name, 'utf_8')

    map_name_match = match_fuzzy(map_name, valid_map_names)

    if map_name_match is None:
        raise GenericError(
            'Could not resolve map name {value#map_name} to valid map. Please try again.',
            map_name=map_name)

    defer.returnValue(map_name_match)
Esempio n. 6
0
File: duel.py Progetto: fdChasm/spyd
    def execute(cls, spyd_server, room, client, command_string, arguments, raw_args):
        try:
            cn, mode_name, map_name = parse_arguments(raw_args)

            if mode_name is not None:
                valid_mode_names = gamemodes.keys()
                mode_name_match = match_fuzzy(str(mode_name), valid_mode_names)

                if mode_name_match is None:
                    raise GenericError('Could not resolve mode name {value#mode_name} to valid mode. Please try again.', mode_name=mode_name)

                mode_name = mode_name_match

            if map_name is not None:
                map_name = yield resolve_map_name(room, map_name)

            duel_command_msg = duel_command.format(client=client)
            challenge_details = get_challenge_details(mode_name, map_name)

            if cn is not None:
                target = room.get_client(int(cn))
                if target is client:
                    raise GenericError("You can't duel yourself.")

                existing_challenge = get_existing_challenge(target, client)

                if existing_challenge is not None:
                    begin_duel(room, client, target, existing_challenge)

                else:
                    save_specific_challenge(client, target, mode_name, map_name)
                    target.send_server_message(info(cn_chall_msg, client=client, challenge_details=challenge_details, duel_command=duel_command_msg))
                    client.send_server_message(info(chall_sent_msg))

            else:
                save_general_challenge(client, mode_name, map_name)
                room.server_message(info(looking_msg, client=client, challenge_details=challenge_details, duel_command=duel_command_msg), exclude=(client,))
                client.send_server_message(info(chall_sent_msg))
        except:
            traceback.print_exc()
Esempio n. 7
0
 def test_case_sensitive(self):
     self.assertEqual(match_fuzzy('foo', ['fool', 'food', 'floor'], allow_ci_check=False), 'fool')
Esempio n. 8
0
 def test_no_match_case_insensitive(self):
     self.assertEqual(match_fuzzy('zzz', ['FOOL', 'FOOD', 'FLOOR'], allow_ci_check=True), None)
Esempio n. 9
0
 def get_room(self, name, fuzzy):
     if name in self.rooms:
         return self.rooms[name]
     elif fuzzy:
         name_match = match_fuzzy(name, list(self.rooms.keys()))
         return self.rooms.get(name_match, None)
Esempio n. 10
0
 def test_case_sensitive(self):
     self.assertEqual(
         match_fuzzy('foo', ['fool', 'food', 'floor'],
                     allow_ci_check=False), 'fool')
Esempio n. 11
0
 def test_no_match_case_insensitive(self):
     self.assertEqual(
         match_fuzzy('zzz', ['FOOL', 'FOOD', 'FLOOR'], allow_ci_check=True),
         None)
Esempio n. 12
0
 def get_room(self, name, fuzzy):
     if name in self.rooms:
         return self.rooms[name]
     elif fuzzy:
         name_match = match_fuzzy(name, self.rooms.keys())
         return self.rooms.get(name_match, None)