Beispiel #1
0
def parse_at_cursor(cursor, buffer):
    args_range = _get_args_range(cursor, buffer)
    if not args_range:
        return None
    (start_row, start_col), (end_row, end_col) = args_range
    beginning = buffer[start_row][:start_col + 1]
    ending = buffer[end_row][end_col:]
    buffer_range_len = sum(
        len(buffer[index]) for index in range(start_row, end_row + 1))
    args_start = start_col + 1
    args_end = args_start + buffer_range_len - len(beginning) - len(ending)
    return type(
        '', (), {
            'start_row_index':
            start_row,
            'end_row_index':
            end_row,
            'start_row_indent':
            _get_line_indent(buffer[start_row]),
            'beginning':
            beginning,
            'args':
            parse_args_line(''.join(
                buffer[start_row:end_row + 1])[args_start:args_end]),
            'ending':
            ending,
        })
Beispiel #2
0
def test_parse_args_line_empty_args_returns_array_with_original_args_line():
    assert args_parser.parse_args_line(',,,') == [',,,']
Beispiel #3
0
def test_parse_args_line_nested_calls_multiple_bracket_types_returns_args():
    assert (args_parser.parse_args_line(
        'l1([1,2,3,], {"a": [3,6,7],}), l2[5], {}, []') == [
            'l1([1,2,3,], {"a": [3,6,7],})', 'l2[5]', '{}', '[]'
        ])
Beispiel #4
0
def test_parse_args_line_nested_calls_single_bracket_type_returns_args():
    assert (args_parser.parse_args_line('l11(l21(l31(a, b), c), l22(d, e)), f')
            == ['l11(l21(l31(a, b), c), l22(d, e))', 'f'])
Beispiel #5
0
def test_parse_args_line_returns_args_with_spaces_discarded():
    assert args_parser.parse_args_line('  a  , b,c  , d') == [
        'a', 'b', 'c', 'd'
    ]
Beispiel #6
0
def test_parse_args_line_invalid_args_returns_array_with_original_args_line(
        invalid_line):
    assert args_parser.parse_args_line(invalid_line) == [invalid_line]