56 lines
1.8 KiB
Python
56 lines
1.8 KiB
Python
"""Filter functions."""
|
|
|
|
|
|
def filter_content_return_one_of_type(
|
|
content, namestartswith, filterfiltype, attr="name"
|
|
):
|
|
"""Only match 1 of the filter."""
|
|
contents = []
|
|
filetypefound = False
|
|
for filename in content:
|
|
if isinstance(filename, str):
|
|
if filename.startswith(namestartswith):
|
|
if filename.endswith(f".{filterfiltype}"):
|
|
if not filetypefound:
|
|
contents.append(filename)
|
|
filetypefound = True
|
|
continue
|
|
else:
|
|
contents.append(filename)
|
|
else:
|
|
if getattr(filename, attr).startswith(namestartswith):
|
|
if getattr(filename, attr).endswith(f".{filterfiltype}"):
|
|
if not filetypefound:
|
|
contents.append(filename)
|
|
filetypefound = True
|
|
continue
|
|
else:
|
|
contents.append(filename)
|
|
return contents
|
|
|
|
|
|
def find_first_of_filetype(content, filterfiltype, attr="name"):
|
|
"""Find the first of the file type."""
|
|
filename = ""
|
|
for _filename in content:
|
|
if isinstance(_filename, str):
|
|
if _filename.endswith(f".{filterfiltype}"):
|
|
filename = _filename
|
|
break
|
|
else:
|
|
if getattr(_filename, attr).endswith(f".{filterfiltype}"):
|
|
filename = getattr(_filename, attr)
|
|
break
|
|
return filename
|
|
|
|
|
|
def get_first_directory_in_directory(content, dirname):
|
|
"""Return the first directory in dirname or None."""
|
|
directory = None
|
|
for path in content:
|
|
if path.full_path.startswith(dirname) and path.full_path != dirname:
|
|
if path.is_directory:
|
|
directory = path.filename
|
|
break
|
|
return directory
|