#// Copyright (c) 2000-2017 Ericsson Telecom AB                                                         //
#// All rights reserved. This program and the accompanying materials are made available under the terms //
#// of the Eclipse Public License v1.0 which accompanies this distribution, and is available at         //
#// http://www.eclipse.org/legal/epl-v10.html                                                           //
#/////////////////////////////////////////////////////////////////////////////////////////////////////////
'''
A small BattleShip game for testing purposes and a little fun.
'''

from BattleShip import BattleShip

EXTENSION = 'api.battleship'

def createHandler(directory, *args):
    return BattleShip(directory)