67 lines
1.7 KiB
Python
67 lines
1.7 KiB
Python
from cpl_query.exceptions import ArgumentNoneException, ExceptionArgument, IndexOutOfRangeException
|
|
from cpl_query.extension.iterable_abc import IterableABC
|
|
|
|
|
|
def skip_query(_list: IterableABC, _index: int) -> IterableABC:
|
|
if _list is None:
|
|
raise ArgumentNoneException(ExceptionArgument.list)
|
|
|
|
if _index is None:
|
|
raise ArgumentNoneException(ExceptionArgument.index)
|
|
|
|
if _index >= len(_list):
|
|
raise IndexOutOfRangeException()
|
|
|
|
result = IterableABC()
|
|
result.extend(_list[_index:])
|
|
return result
|
|
|
|
|
|
def skip_last_query(_list: IterableABC, _index: int) -> IterableABC:
|
|
if _list is None:
|
|
raise ArgumentNoneException(ExceptionArgument.list)
|
|
|
|
if _index is None:
|
|
raise ArgumentNoneException(ExceptionArgument.index)
|
|
|
|
index = len(_list) - _index
|
|
|
|
if index >= len(_list) or index < 0:
|
|
raise IndexOutOfRangeException()
|
|
|
|
result = IterableABC()
|
|
result.extend(_list[:index])
|
|
return result
|
|
|
|
|
|
def take_query(_list: IterableABC, _index: int) -> IterableABC:
|
|
if _list is None:
|
|
raise ArgumentNoneException(ExceptionArgument.list)
|
|
|
|
if _index is None:
|
|
raise ArgumentNoneException(ExceptionArgument.index)
|
|
|
|
if _index >= len(_list):
|
|
raise IndexOutOfRangeException()
|
|
|
|
result = IterableABC()
|
|
result.extend(_list[:_index])
|
|
return result
|
|
|
|
|
|
def take_last_query(_list: IterableABC, _index: int) -> IterableABC:
|
|
if _list is None:
|
|
raise ArgumentNoneException(ExceptionArgument.list)
|
|
|
|
if _index is None:
|
|
raise ArgumentNoneException(ExceptionArgument.index)
|
|
|
|
index = len(_list) - _index
|
|
|
|
if index >= len(_list) or index < 0:
|
|
raise IndexOutOfRangeException()
|
|
|
|
result = IterableABC()
|
|
result.extend(_list[index:])
|
|
return result
|