Avoid setof, favor findall; less buggy.

This commit is contained in:
2026-04-20 16:49:07 +01:00
parent c713683837
commit f821bab9b6

View File

@@ -174,7 +174,7 @@ filetype_suffix(File, SuffixLower) :-
last(Parts, Suffix), last(Parts, Suffix),
string_lower(Suffix, SuffixLower). string_lower(Suffix, SuffixLower).
files_to_filetypes(Files, FileTypes) :- files_to_filetypes(Files, FileTypes) :-
setof( findall(
Suffix, Suffix,
( (
member(File, Files), member(File, Files),
@@ -184,31 +184,34 @@ files_to_filetypes(Files, FileTypes) :-
format(atom(Suffix), '.~w', [SuffixWithoutDot]), format(atom(Suffix), '.~w', [SuffixWithoutDot]),
format(user_error, 'Formatted suffix with dot: ~w~n', [Suffix]) format(user_error, 'Formatted suffix with dot: ~w~n', [Suffix])
), ),
FileTypes FileTypeList
), !. ),
list_to_set(FileTypeList, FileTypes), !.
files_to_filetypes(_Files, []). % If no file types could be extracted, return an empty list files_to_filetypes(_Files, []). % If no file types could be extracted, return an empty list
file_to_basename(File, BaseName) :- file_to_basename(File, BaseName) :-
split_string(File, "/", "", Parts), split_string(File, "/", "", Parts),
last(Parts, BaseName). last(Parts, BaseName).
files_to_basenames(Files, BaseNames) :- files_to_basenames(Files, BaseNames) :-
setof( findall(
BaseName, BaseName,
( (
member(File, Files), member(File, Files),
file_to_basename(File, BaseName) file_to_basename(File, BaseName)
), ),
BaseNames BaseNameList
), !. ),
list_to_set(BaseNameList, BaseNames), !.
files_to_basenames(_Files, []). % If no basenames could be extracted, return an empty list files_to_basenames(_Files, []). % If no basenames could be extracted, return an empty list
files_with_prefix_slash(Files, PrefixedFiles) :- files_with_prefix_slash(Files, PrefixedFiles) :-
setof( findall(
PrefixedFile, PrefixedFile,
( (
member(File, Files), member(File, Files),
format(atom(PrefixedFile), '/~w', [File]) format(atom(PrefixedFile), '/~w', [File])
), ),
PrefixedFiles PrefixedFileList
), !. ),
list_to_set(PrefixedFileList, PrefixedFiles), !.
files_with_prefix_slash(_Files, []). % If no files could be prefixed, return an empty list files_with_prefix_slash(_Files, []). % If no files could be prefixed, return an empty list
git_ssh_url(Name, URL) :- git_ssh_url(Name, URL) :-
git_url(BaseURL), git_url(BaseURL),