コード例 #1
0
 def test_return_text_completed(self):
     nicks = Completion()
     nicks.add('coin')
     nicks.add('pan')
     text = "foo bar @co"
     result = nicks.text_complete(text)
     self.assertEqual(result, 'in')
コード例 #2
0
def test_valid_author_record_parses_as_completion_object():
    id = str(uuid4())
    valid_record = {'id': id, 'name': 'Some Dude', 'tags': []}

    author_tokens = ['some', 'dude']

    got = parse_author_record(valid_record)
    want = Completion(id=id, name='Some Dude', tokens=author_tokens)
    assert got == want
コード例 #3
0
 def test_return_text_completed_failed(self):
     nicks = Completion()
     nicks.add('coin')
     nicks.add('pan')
     text = ['foo bar co', 'foo @co bar']
     for t in text:
         result =  nicks.text_complete(t)
         self.assertIsNone(result)
コード例 #4
0
ファイル: tyrs.py プロジェクト: Nic0/tyrs
def init_timelines():
    buffers = ('home', 'mentions', 'direct', 'search', 'user', 'favorite',
               'thread', 'user_retweet', 'list')
    timelines = {}
    for buff in buffers:
        timelines[buff] = Timeline(buff)
    container.add('timelines', timelines)
    container.add('buffers', buffers)
    completion = Completion()
    container.add('completion', completion)
コード例 #5
0
    def __init__(self):
        # parse program arguments
        args = self.parse_args()
        addresses = self.read_addresses_dictionnary(args.dictionnary)

        if not addresses:
            AutoCompletion.quit_invalid_argument()

        Completion(addresses).do_completion()

        sys.exit(0)
コード例 #6
0
 def test_return_completion(self):
     nicks = Completion()
     nicks.add('coincoin')
     nicks.add('cooooooo')
     result = nicks.complete('coi')
     self.assertEqual('coincoin', result)
     result = nicks.complete('pan')
     self.assertIsNone(result)
     result = nicks.complete('co')
     self.assertIsNone(result)
コード例 #7
0
ファイル: test_complete.py プロジェクト: dialelo/tyrs
 def test_return_text_completed(self):
     nicks = Completion()
     nicks.add('coin')
     nicks.add('pan')
     text = "foo bar @co"
     result = nicks.text_complete(text)
     self.assertEqual(result, 'in')
コード例 #8
0
ファイル: test_complete.py プロジェクト: dialelo/tyrs
 def test_return_text_completed_failed(self):
     nicks = Completion()
     nicks.add('coin')
     nicks.add('pan')
     text = ['foo bar co', 'foo @co bar']
     for t in text:
         result =  nicks.text_complete(t)
         self.assertIsNone(result)
コード例 #9
0
def test_valid_course_record_parses_as_completion_object():
    id = str(uuid4())
    valid_record = {
        'id': id,
        'title': 'This is a Title',
        'authors': ['Some Dude'],
        'tags': []
    }

    course_tokens = ['this', 'is', 'a', 'title', 'some', 'dude']

    got = parse_course_record(valid_record)
    want = Completion(id=id, name='This is a Title', tokens=course_tokens)
    assert got == want
コード例 #10
0
ファイル: test_complete.py プロジェクト: dialelo/tyrs
 def test_return_completion(self):
     nicks = Completion()
     nicks.add('coincoin')
     nicks.add('cooooooo')
     result = nicks.complete('coi')
     self.assertEqual('ncoin', result)
     result = nicks.complete('pan')
     self.assertIsNone(result)
     result = nicks.complete('co')
     self.assertEqual(result, 'incoin')
コード例 #11
0
from chore import Chore
from completion import Completion
from server import Scheduler

dummy_chore_no_history = Chore("Test Empty", "weekly")

dummy_chore = Chore("Test", "weekly")
dummy_chore.history.append(Completion("Alice", "2019-11-25"))
dummy_chore.history.append(Completion("Bob", "2019-12-30"))

garbage = Chore("Take Out Garbage", "weekly")
garbage.history = [
    Completion("Alice", "2019-12-11"),
    Completion("Bob", "2019-12-18"),
    Completion("Alice", "2019-12-24"),
    Completion("Alice", "2020-01-01")  # End Chore 0: index 3
]

litter = Chore("Litter Boxes", "daily")
litter.history = [
    Completion("Bob", "2019-12-22"),
    Completion("Bob", "2019-12-23"),
    Completion("Bob", "2019-12-24"),
    Completion("Bob", "2019-12-25"),
    Completion("Bob", "2019-12-26")  # End Chore 1: index 8
]

dog_food = Chore("Buy Dog Food", "monthly")
dog_food.history = [
    Completion("Alice", "2019-11-01"),
    Completion("Bob", "2019-12-02"),
コード例 #12
0
ファイル: repl.py プロジェクト: gbour/epbxd-test-client
class Repl(asyncore.file_dispatcher):
    """read-eval-print loop object

        working asynchroneously
    """
    def __init__(self, callback=None):
        self.callback   = callback
        self.completion = Completion()

        self.old_settings = termios.tcgetattr(sys.stdin)
        tty.setcbreak(sys.stdin.fileno())
        #tty.setraw(sys.stdin.fileno())
    
        # bufferless stdout
        sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

        self.buffer = []
        asyncore.file_dispatcher.__init__(self, sys.stdin)

        #TODO: erase or append option
        self.logf = open('./trace.log', 'w')

        # ANSI sequences
        """ ANSI sequences
        
            An ANSI sequence starts with ´ (0x27) character and is followed by several keys
            i.e: up arrow is e-s "´[A"
        """
        self.ansi_mode   = False
        self.ansi_buffer = ""
        self.sequences   = [
            "[A",	# up arrow
            "[B", # down arrow
            "[C", # right arrow
            "[D", # left arrow

            "[2~", # insert
            "[3~", # suppr
            "OH" , # home
            "OF" , # end
            "[5~" , # page up
            "[6~" , # page down
            "[1~", # home (keypad)
            "[4~", # end (keypad)
            "[E", # keypad middle key (5)
            "OP", # f1
            "OQ", # f2
            "OR", # f3
            "OS", # f4
            "[15~", # f5
            "[17~", # f6
            "[18~", # f7
            "[19~", # f8
            "[20~", # f9
            "[21~", # f10
            "[23~", # f11 ??
            "[24~", # f12
        ]

        # history
        self.histf = open('.history', 'a+')

        #NOTE: we only keep last 100 commands
        self.history = [line[:-1] for line in self.histf.readlines()]
        if len(self.history) > 100:
            self.histf.seek(0)
            self.history = self.history[-100:]
        self.curhist = None

    def set_callback(self, callback):
        self.callback = callback

    def cleanup(self):
        termios.tcsetattr(sys.stdin, termios.TCSADRAIN, self.old_settings)
        self.logf.close()
        self.histf.close()

    def handle_read(self):
        c = self.recv(1)
        #print self.ansi_buffer, c

        if self.ansi_mode:
            self.ansi_buffer += c
            if self.ansi_buffer in self.sequences:

                if self.ansi_buffer == '[A' and len(self.history) > 0: # up arrow:
                    if self.curhist is None:
                        self.curhist = len(self.history)-1

                        if len(self.buffer) > 0:
                            self.history.append(''.join(self.buffer))
                    elif self.curhist > 0:
                        self.history[self.curhist] = ''.join(self.buffer)
                        self.curhist -= 1

                    if self.curhist >= 0:
                        # erase line (5 == prompt width)
                        sys.stdout.write('\r' + ' '*(5+len(''.join(self.buffer).expandtabs())) + '\r')
                        self.buffer = list(self.history[self.curhist])
                        self.printit(NONE,'', NONE)

                elif self.ansi_buffer == '[B' and self.curhist is not None and\
                        self.curhist < len(self.history)-1:
                        sys.stdout.write('\r' + ' '*(5+len(''.join(self.buffer).expandtabs())) + '\r')

                        self.curhist += 1
                        self.buffer = list(self.history[self.curhist])
                        self.printit(NONE, '', NONE)


                self.ansi_mode = False

            return

        # start-of ANSI sequence
        if ord(c) == 27:
            self.ansi_mode = True; self.ansi_buffer = ""; return

        # carriage return
        elif c == '\n':
            # do the job
            cmd = ''.join(self.buffer).strip()

            delete = True
            if len(cmd) > 0:
                self.curhist = None
                self.add_history(cmd)
                delete = self.callback(cmd)

            # flush buffer
            if delete:
                del self.buffer[:]; self.printit(NONE,'',NONE)
            return

        # backspace
        elif c == '\b' or ord(c) == 127:
            if len(self.buffer) > 0:
                l = len(self.buffer[-1].expandtabs())
                sys.stdout.write('\b'*l + ' '*l + '\b'*l)
                del self.buffer[-1]

            return

        #tabulation
        elif ord(c) == 9:
            status, cmd, values = self.completion.complete(''.join(self.buffer))
            if   status == 'invalid':
                self.printit(ERROR, 'Command not found')
            elif status == 'completion':
                print
                for val in values:
                    print "\t", val

                self.buffer = list(cmd)
                self.printit(NONE,'',NONE)
            return

        sys.stdout.write(c)
        self.buffer.append(c)

    def printit(self, status=NONE, msg="nop", place=INBETWEEN, clean=False):
        if place == NONE:
            sys.stdout.write(Colors.BOLD + "$> " + Colors.END)
            sys.stdout.write(''.join(self.buffer))
            return

        if status != NONE:
            msg = Colors.status[status] + msg + Colors.END

        if place & BEFORE == BEFORE or place == REPLACE:
            sys.stdout.write('\r'+' '*100+'\r')
            sys.stdout.write(msg)
            
            if place & BEFORE == BEFORE:
                sys.stdout.write('\n'+Colors.BOLD + "$> " + Colors.END)
                sys.stdout.write(''.join(self.buffer))
           
        if place & AFTER == AFTER:
            sys.stdout.write('\n'+msg)

        if place & INBETWEEN == INBETWEEN:
            sys.stdout.write('\n' + Colors.BOLD + "$> " + Colors.END)
            sys.stdout.write(''.join(self.buffer))

    def add_history(self, command):
        self.history.append(command)
        self.histf.write(command+'\n')

    def writable(self):
        """
            NOTE: if writable() not set to False, file socket is NON-BLOCKING (using select())
        """
        return False
コード例 #13
0
ファイル: test_complete.py プロジェクト: dialelo/tyrs
 def test_add_existing(self, ):
     nicks = Completion()
     nicks.add('coin')
     nicks.add('coin')
     self.assertEqual(1, len(nicks))
コード例 #14
0
ファイル: test_complete.py プロジェクト: dialelo/tyrs
 def test_add(self):
     nicks = Completion()
     nicks.add('coin')
     self.assertEqual(1, len(nicks))
     nicks.add('pan')
     self.assertEqual(2, len(nicks))
コード例 #15
0
ファイル: repl.py プロジェクト: gbour/epbxd-test-client
    def __init__(self, callback=None):
        self.callback   = callback
        self.completion = Completion()

        self.old_settings = termios.tcgetattr(sys.stdin)
        tty.setcbreak(sys.stdin.fileno())
        #tty.setraw(sys.stdin.fileno())
    
        # bufferless stdout
        sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

        self.buffer = []
        asyncore.file_dispatcher.__init__(self, sys.stdin)

        #TODO: erase or append option
        self.logf = open('./trace.log', 'w')

        # ANSI sequences
        """ ANSI sequences
        
            An ANSI sequence starts with ´ (0x27) character and is followed by several keys
            i.e: up arrow is e-s "´[A"
        """
        self.ansi_mode   = False
        self.ansi_buffer = ""
        self.sequences   = [
            "[A",	# up arrow
            "[B", # down arrow
            "[C", # right arrow
            "[D", # left arrow

            "[2~", # insert
            "[3~", # suppr
            "OH" , # home
            "OF" , # end
            "[5~" , # page up
            "[6~" , # page down
            "[1~", # home (keypad)
            "[4~", # end (keypad)
            "[E", # keypad middle key (5)
            "OP", # f1
            "OQ", # f2
            "OR", # f3
            "OS", # f4
            "[15~", # f5
            "[17~", # f6
            "[18~", # f7
            "[19~", # f8
            "[20~", # f9
            "[21~", # f10
            "[23~", # f11 ??
            "[24~", # f12
        ]

        # history
        self.histf = open('.history', 'a+')

        #NOTE: we only keep last 100 commands
        self.history = [line[:-1] for line in self.histf.readlines()]
        if len(self.history) > 100:
            self.histf.seek(0)
            self.history = self.history[-100:]
        self.curhist = None
コード例 #16
0
ファイル: tyrs.py プロジェクト: dialelo/tyrs
def init_completion():
    completion = Completion()
    for friend in container['api'].api.GetFriends():
        completion.add(friend.screen_name)
    container['completion'] = completion
コード例 #17
0
from autocomplete import (display_completions, find_completions)
from completion import (Completion, Repository)

repository = Repository(
    authors=[
        Completion(id='4', name='Jared Gilbert', tokens=['jared', 'gilbert'])
    ],
    courses=[
        Completion(id='1',
                   name='Fundamentals of Angular 4',
                   tokens=['fundamentals', 'of', 'angular', '4', 'ha',
                           'phan']),
        Completion(
            id='2',
            name='Angular Components and Stuff',
            tokens=['angular', 'components', 'and', 'stuff', 'ha', 'phan']),
        Completion(id='3',
                   name='React for Lazy People',
                   tokens=['react', 'for', 'lazy', 'people'])
    ])


def test_no_query_yields_empty_list():
    got = find_completions(None, repository)
    want = []
    assert got == want


def test_no_matches_yields_empty_list():
    got = find_completions('java', repository)
    want = []
コード例 #18
0
 def test_class(self):
     nicks = Completion()
     self.assertIsInstance(nicks, Completion)
コード例 #19
0
ファイル: chore.py プロジェクト: YarThePirate/choreganizer
 def mark_completed(self, person):
     self.history.append(Completion(person, date.today().isoformat()))
コード例 #20
0
 def test_add(self):
     nicks = Completion()
     nicks.add('coin')
     self.assertEqual(1, len(nicks))
     nicks.add('pan')
     self.assertEqual(2, len(nicks))
コード例 #21
0
 def test_add_existing(self, ):
     nicks = Completion()
     nicks.add('coin')
     nicks.add('coin')
     self.assertEqual(1, len(nicks))