Пример #1
0
    def execute():
        print
        print SEPARATOR

        while True:
            stdout.write('[command]: ')
            raw_command = raw_input()

            command = CommandManager().parse(raw_command)

            if command:
                result = command.execute()
                if result:
                    return Modes.PRINT_MODE
            else:
                print "\tUnknown command: %s" % raw_command
Пример #2
0
from command import CommandManager
import json
import slack
import time

with open('config.json', 'r') as f:
    config = json.load(f)

CHESSTER_ID = config['CHESSTER']['ID']
SLEEP_SECONDS = config['GENERAL']['SLEEP_SECONDS']

command_queue = CommandManager()


def start_chesster():
    """Start up chesster"""
    if slack.connect():
        print 'Chesster is up and running!'
        run_chesster()


def run_chesster():
    """Let chesster listen for any commands and act on them"""
    while True:
        command, channel = get_command_from_chat(slack.read())
        if command is not None:
            command_queue.put_command_in_queue(command)

        response = command_queue.execute_top_command_in_queue()
        answer_in_chat(response, channel)
        time.sleep(SLEEP_SECONDS)
Пример #3
0
 def __init__(self, storage, storageData):
     self.storage = storage
     self.storageData = storageData
     self.pages = storage.loadPages(storageData)
     self._manager = CommandManager(config.UNDO_HISTORY_SIZE)
Пример #4
0
class Document(object):
    def __init__(self, storage, storageData):
        self.storage = storage
        self.storageData = storageData
        self.pages = storage.loadPages(storageData)
        self._manager = CommandManager(config.UNDO_HISTORY_SIZE)

    def __len__(self):
        return len(self.pages)

    def __getitem__(self, key):
        return self.pages[key]

    def findItemByPoint(self, page, itemType, point):
        if isinstance(page, int):
            page = self[page]
        return page.findItem(itemType,
            lambda item: item.bounds.containsPoint(point))

    def merge(self, page, itemType, bounds):
        if isinstance(page, int):
            page = self[page]
        page.flagByBounds(itemType, bounds.intersects)
        page.merge(itemType, self._manager)
        if self._manager.commit():
            Publisher().sendMessage('DOCUMENT_CHANGE')

    def cutout(self, page, itemType, bounds):
        if isinstance(page, int):
            page = self[page]
        page.flagByBounds(itemType - 1, bounds.intersects)
        page.cutout(itemType, self._manager)
        if self._manager.commit():
            Publisher().sendMessage('DOCUMENT_CHANGE')

    def cutout2(self, pagenb, itemType, bounds):
        self.pages[pagenb].flagByBounds(itemType - 1, bounds.intersects)
        self.pages[pagenb]._cutout2(itemType, self._manager)
        if self._manager.commit():
            Publisher().sendMessage('DOCUMENT_CHANGE')

    def atomize(self, page, itemType, bounds):
        if isinstance(page, int):
            page = self[page]
        page.flagByBounds(itemType, bounds.intersects)
        page.atomize(itemType, self._manager)
        if self._manager.commit():
            Publisher().sendMessage('DOCUMENT_CHANGE')

    def smartSplitWords(self, page, bounds):
        if isinstance(page, int):
            page = self[page]
        page.flagByBounds(constants.WORD, bounds.intersects)
        page.smartSplitWords(self._manager)
        if self._manager.commit():
            Publisher().sendMessage('DOCUMENT_CHANGE')

    def changeLabel(self, zone, label):
        zone.setLabel(label, self._manager)
        if self._manager.commit():
            Publisher().sendMessage('DOCUMENT_CHANGE')

    def changeLabels(self, page, bounds, label):
        if isinstance(page, int):
            page = self[page]
        for zone in page.iterItems(constants.ZONE, lambda item: bounds.intersects(item.bounds)):
            zone.setLabel(label, self._manager)
        if self._manager.commit():
            Publisher().sendMessage('DOCUMENT_CHANGE')

    def canUndo(self):
        return self._manager.canUndo()

    def undo(self):
        if self._manager.undo():
            Publisher().sendMessage('DOCUMENT_CHANGE')

    def canRedo(self):
        return self._manager.canRedo()

    def redo(self):
        if self._manager.redo():
            Publisher().sendMessage('DOCUMENT_CHANGE')

    def isModified(self):
        """
        Returns true if the document has been modified since last save and
        false otherwise.
        """
        return not self._manager.isClean()

    def save(self, *args, **kwargs):
        self.storage.savePages(self.pages, self.storageData, *args, **kwargs)
        self._manager.clean()
Пример #5
0
logging.basicConfig(level=logging.INFO)

wame_config = dict()
xkcd_index = dict()
xkcd_refs = dict()

wame_config = CLIENT.loadJson(CONFIG)
xkcd_index = CLIENT.loadJson(INDEX)
xkcd_refs = CLIENT.loadJson(REF)
blk_list = CLIENT.loadJson(BL)
commands = CLIENT.loadJson(COMMANDS)

Wame = discord.Client()
wgame = discord.Game(name=wame_config['game'])

comanager = CommandManager(Wame, xkcd_refs, xkcd_index, blk_list, commands,
                           wame_config)


@Wame.event
async def on_ready():
    await Wame.change_presence(game=wgame)
    bug_channel = Wame.get_channel(wame_config['report_channel'])
    CLIENT.greet(Wame, channel=bug_channel)


@Wame.event
async def on_message(message):
    if any([message.content.startswith(i) for i in wame_config['prefix']]):
        if message.mention_everyone \
                or len(message.content.split("@here")) > 1 \
                or len(message.mentions) > 1:
Пример #6
0
JSON = PATH['json']
# Yep you should rename your config.json and append priv to it
# This way you won't add even more private stuff on github
CONFIG = JSON + "priv.nhk.config.json"
COMMANDS = JSON + "nhk.command.json"

logging.basicConfig(level=logging.INFO)

nhatz_config = CLIENT.loadJson(CONFIG)
commands = CLIENT.loadJson(COMMANDS)
censored = nhatz_config['censored']

Nhatz = discord.Client()
last_msg = dict()

comanager = CommandManager(Nhatz, commands, nhatz_config)


def record_message(msg):
    if msg.channel.id in comanager.last_msg:
        comanager.last_msg[msg.channel.id].put(msg)
    else:
        comanager.last_msg[msg.channel.id] = queue.LifoQueue()
        comanager.last_msg[msg.channel.id].put(msg)


@Nhatz.event
async def on_ready():
    CLIENT.greet(Nhatz)

Пример #7
0
 def __init__(self, storage, storageData):
     self.storage = storage
     self.storageData = storageData
     self.pages = storage.loadPages(storageData)
     self._manager = CommandManager(config.UNDO_HISTORY_SIZE)
Пример #8
0
class Document(object):
    def __init__(self, storage, storageData):
        self.storage = storage
        self.storageData = storageData
        self.pages = storage.loadPages(storageData)
        self._manager = CommandManager(config.UNDO_HISTORY_SIZE)

    def __len__(self):
        return len(self.pages)

    def __getitem__(self, key):
        return self.pages[key]

    def findItemByPoint(self, page, itemType, point):
        if isinstance(page, int):
            page = self[page]
        return page.findItem(itemType,
                             lambda item: item.bounds.containsPoint(point))

    def merge(self, page, itemType, bounds):
        if isinstance(page, int):
            page = self[page]
        page.flagByBounds(itemType, bounds.intersects)
        page.merge(itemType, self._manager)
        if self._manager.commit():
            Publisher().sendMessage('DOCUMENT_CHANGE')

    def cutout(self, page, itemType, bounds):
        if isinstance(page, int):
            page = self[page]
        page.flagByBounds(itemType - 1, bounds.intersects)
        page.cutout(itemType, self._manager)
        if self._manager.commit():
            Publisher().sendMessage('DOCUMENT_CHANGE')

    def cutout2(self, pagenb, itemType, bounds):
        self.pages[pagenb].flagByBounds(itemType - 1, bounds.intersects)
        self.pages[pagenb]._cutout2(itemType, self._manager)
        if self._manager.commit():
            Publisher().sendMessage('DOCUMENT_CHANGE')

    def atomize(self, page, itemType, bounds):
        if isinstance(page, int):
            page = self[page]
        page.flagByBounds(itemType, bounds.intersects)
        page.atomize(itemType, self._manager)
        if self._manager.commit():
            Publisher().sendMessage('DOCUMENT_CHANGE')

    def smartSplitWords(self, page, bounds):
        if isinstance(page, int):
            page = self[page]
        page.flagByBounds(constants.WORD, bounds.intersects)
        page.smartSplitWords(self._manager)
        if self._manager.commit():
            Publisher().sendMessage('DOCUMENT_CHANGE')

    def changeLabel(self, zone, label):
        zone.setLabel(label, self._manager)
        if self._manager.commit():
            Publisher().sendMessage('DOCUMENT_CHANGE')

    def changeLabels(self, page, bounds, label):
        if isinstance(page, int):
            page = self[page]
        for zone in page.iterItems(
                constants.ZONE, lambda item: bounds.intersects(item.bounds)):
            zone.setLabel(label, self._manager)
        if self._manager.commit():
            Publisher().sendMessage('DOCUMENT_CHANGE')

    def canUndo(self):
        return self._manager.canUndo()

    def undo(self):
        if self._manager.undo():
            Publisher().sendMessage('DOCUMENT_CHANGE')

    def canRedo(self):
        return self._manager.canRedo()

    def redo(self):
        if self._manager.redo():
            Publisher().sendMessage('DOCUMENT_CHANGE')

    def isModified(self):
        """
        Returns true if the document has been modified since last save and
        false otherwise.
        """
        return not self._manager.isClean()

    def save(self, *args, **kwargs):
        self.storage.savePages(self.pages, self.storageData, *args, **kwargs)
        self._manager.clean()