Beispiel #1
0
    def testSimpleAddresses(self):
        values = (
                '%',
                '$',
                '.',
                '1',
                '10',
                '100',
                '+100',
                '-100',
                )

        for v in values:
            self.assertTrue(EX_STANDALONE_RANGE.match(v))

        self.assertFalse(EX_STANDALONE_RANGE.match('a'))
def partition_raw_range(range):
    """takes a text range and breaks it up into its constituents:
            /foo/+10;$-15
            ...would yield...

            left: /foo/
            left_offset: +10
            separator: ;
            right: $
            right_offset: -15
    """
    # At this point we can be sure that ``range`` is a valid prefix range.
    # ``EX_PREFIX_RANGE`` won't match correctly here because the suffixed
    # command has been stripped, so we use ``EX_STANDALONE_RANGE`` instead.
    # parts = EX_PREFIX_RANGE.search(range).groupdict()
    parts = EX_STANDALONE_RANGE.search(range).groupdict()
    if parts['incomplete']:
        return EX_RANGE(
            left=parts['inc_laddress'] or '.',
            left_offset=parts['inc_loffset'] or '0',
            separator=parts['suf_alt_separator']
            or parts['pref_alt_separator'],
            right=parts['inc_raddress'] or '.',
            right_offset=parts['inc_loffset'] or '0',
        )

    return EX_RANGE(left=parts['laddress'],
                    left_offset=parts['loffset'] or '0',
                    separator=parts['separator'],
                    right=parts['raddress'],
                    right_offset=parts['roffset'] or '0')
Beispiel #3
0
    def testSimpleAddresses(self):
        values = (
            '%',
            '$',
            '.',
            '1',
            '10',
            '100',
            '+100',
            '-100',
        )

        for v in values:
            self.assertTrue(EX_STANDALONE_RANGE.match(v))

        self.assertFalse(EX_STANDALONE_RANGE.match('a'))
Beispiel #4
0
def partition_raw_only_range(range):
    parts = EX_STANDALONE_RANGE.search(range).groupdict()
    if parts['openended']:
        return EX_RANGE(
                    left=parts['openended'],
                    left_offset='0',
                    separator='',
                    right='',
                    right_offset='0'
                    )
    elif parts['incomplete']:
        return EX_RANGE(
                    left=parts['inc_laddress'] or '.',
                    left_offset=parts['inc_loffset'] or '0',
                    separator=parts['suf_alt_separator'] or parts['pref_alt_separator'],
                    right=parts['inc_raddress'] or '.',
                    right_offset=parts['inc_loffset'] or '0',
                    )
    else:
        return EX_RANGE(
                    left=parts['laddress'],
                    left_offset=parts['loffset'] or '0',
                    separator=parts['separator'],
                    right=parts['raddress'],
                    right_offset=parts['roffset'] or '0',
                    )
def partition_raw_only_range(range):
    parts = EX_STANDALONE_RANGE.search(range).groupdict()
    if parts['openended']:
        return EX_RANGE(left=parts['openended'],
                        left_offset='0',
                        separator='',
                        right='',
                        right_offset='0')
    elif parts['incomplete']:
        return EX_RANGE(
            left=parts['inc_laddress'] or '.',
            left_offset=parts['inc_loffset'] or '0',
            separator=parts['suf_alt_separator']
            or parts['pref_alt_separator'],
            right=parts['inc_raddress'] or '.',
            right_offset=parts['inc_loffset'] or '0',
        )
    else:
        return EX_RANGE(
            left=parts['laddress'],
            left_offset=parts['loffset'] or '0',
            separator=parts['separator'],
            right=parts['raddress'],
            right_offset=parts['roffset'] or '0',
        )
Beispiel #6
0
def partition_raw_range(range):
    """takes a text range and breaks it up into its constituents:
            /foo/+10;$-15
            ...would yield...

            left: /foo/
            left_offset: +10
            separator: ;
            right: $
            right_offset: -15
    """
    # At this point we can be sure that ``range`` is a valid prefix range.
    # ``EX_PREFIX_RANGE`` won't match correctly here because the suffixed
    # command has been stripped, so we use ``EX_STANDALONE_RANGE`` instead.
    # parts = EX_PREFIX_RANGE.search(range).groupdict()
    parts = EX_STANDALONE_RANGE.search(range).groupdict()
    if parts['incomplete']:
        return EX_RANGE(
                    left=parts['inc_laddress'] or '.',
                    left_offset=parts['inc_loffset'] or '0',
                    separator=parts['suf_alt_separator'] or parts['pref_alt_separator'],
                    right=parts['inc_raddress'] or '.',
                    right_offset=parts['inc_loffset'] or '0',
                    )

    return EX_RANGE(
                left=parts['laddress'],
                left_offset=parts['loffset'] or '0',
                separator=parts['separator'],
                right=parts['raddress'],
                right_offset=parts['roffset'] or '0'
                )
Beispiel #7
0
    def testSimpleRanges(self):
        values = ('.,$',
                    '$,.',
                    '%,.',
                    '.,%',
                    '$,%',
                    '%,$',
                    # FIXME: This one is legal in Vim, but I don't what it does.
                    '.,',
                    ',.',
                    '100,1',)

        for v in values:
            self.assertTrue(EX_STANDALONE_RANGE.match(v))

        self.assertFalse(EX_STANDALONE_RANGE.match('a,$'))
        self.assertFalse(EX_STANDALONE_RANGE.match('$,qwertyzt'))
Beispiel #8
0
    def testSimpleRangesWithOffsets(self):
        values = ('.,$-10',
        '$-10,.+1',
        '.+10,%+1',
        '100+100,1-100',
        '+100,-100',
        # According to Vim, this should be illegal (command error).
        '%-10,.-10',)

        for v in values:
            self.assertTrue(EX_STANDALONE_RANGE.match(v))

        values = (
                    # FIXME: This should be illegal.
                    '$+a,%',)

        for v in values:
            self.assertFalse(EX_STANDALONE_RANGE.match(v))
Beispiel #9
0
    def testComplexRanges(self):
        values = ('/foo/,?bar?',
                    '/foo/,/bar/',
                    '?foo?,?bar?',
                    '/foo/,$',
                    '$,/foo/',
                    '$,/foo/',)

        for v in values:
            self.assertTrue(EX_STANDALONE_RANGE.match(v))
Beispiel #10
0
    def testAddressWithOffsets(self):
        values = ('/foo/+10',
                '/bar/-100',
                '/100/+100',
                '?foo?-10',
                '?bar?+10+10',
                '?100?+10-10',)

        for v in values:
            self.assertTrue(EX_STANDALONE_RANGE.match(v))
Beispiel #11
0
    def testAddressBySearchOnly(self):
        values =  ('/foo/',
                    '/bar/',
                    '/100/',
                    '?foo?',
                    '?bar?',
                    '?100?',)

        for v in values:
            self.assertTrue(EX_STANDALONE_RANGE.match(v))
Beispiel #12
0
    def testSimpleRanges(self):
        values = (
            '.,$',
            '$,.',
            '%,.',
            '.,%',
            '$,%',
            '%,$',
            # FIXME: This one is legal in Vim, but I don't what it does.
            '.,',
            ',.',
            '100,1',
        )

        for v in values:
            self.assertTrue(EX_STANDALONE_RANGE.match(v))

        self.assertFalse(EX_STANDALONE_RANGE.match('a,$'))
        self.assertFalse(EX_STANDALONE_RANGE.match('$,qwertyzt'))
Beispiel #13
0
    def testSimpleRangesWithOffsets(self):
        values = (
            '.,$-10',
            '$-10,.+1',
            '.+10,%+1',
            '100+100,1-100',
            '+100,-100',
            # According to Vim, this should be illegal (command error).
            '%-10,.-10',
        )

        for v in values:
            self.assertTrue(EX_STANDALONE_RANGE.match(v))

        values = (
            # FIXME: This should be illegal.
            '$+a,%', )

        for v in values:
            self.assertFalse(EX_STANDALONE_RANGE.match(v))
Beispiel #14
0
    def testComplexRanges(self):
        values = (
            '/foo/,?bar?',
            '/foo/,/bar/',
            '?foo?,?bar?',
            '/foo/,$',
            '$,/foo/',
            '$,/foo/',
        )

        for v in values:
            self.assertTrue(EX_STANDALONE_RANGE.match(v))
Beispiel #15
0
    def testAddressWithOffsets(self):
        values = (
            '/foo/+10',
            '/bar/-100',
            '/100/+100',
            '?foo?-10',
            '?bar?+10+10',
            '?100?+10-10',
        )

        for v in values:
            self.assertTrue(EX_STANDALONE_RANGE.match(v))
Beispiel #16
0
    def testAddressBySearchOnly(self):
        values = (
            '/foo/',
            '/bar/',
            '/100/',
            '?foo?',
            '?bar?',
            '?100?',
        )

        for v in values:
            self.assertTrue(EX_STANDALONE_RANGE.match(v))
Beispiel #17
0
    def testIncompleteRanges(self):
        values = (
            '100,',
            '+100,',
            '-100,',
            ',100',
            ',+100',
            ',-100',
            '100+100,',
            ',100+100',
            ',/foo/+100',
            '/foo/+100,',
        )

        for v in values:
            self.assertTrue(EX_STANDALONE_RANGE.match(v))
Beispiel #18
0
    def testIncompleteRanges(self):
        values = (
            '100,',
            '+100,',
            '-100,',
            ',100',
            ',+100',
            ',-100',
            '100+100,',
            ',100+100',
            ',/foo/+100',
            '/foo/+100,',
        )

        for v in values:
            self.assertTrue(EX_STANDALONE_RANGE.match(v))