예제 #1
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')
예제 #2
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'
                )
예제 #3
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',
        )
예제 #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',
                    )