mirror of
https://github.com/hsjobeki/noogle.git
synced 2024-12-27 16:02:39 +03:00
24 lines
640 B
TypeScript
24 lines
640 B
TypeScript
import { MetaData, NixType } from "../types/nix";
|
|
import { getTypes } from "./lib";
|
|
|
|
export const byType =
|
|
({ to, from }: { to: NixType; from: NixType }) =>
|
|
(data: MetaData): MetaData => {
|
|
if (to === "any" && from === "any") {
|
|
return data;
|
|
} else {
|
|
return data.filter(
|
|
// TODO: Implement proper type matching
|
|
({ name, fn_type }) => {
|
|
if (fn_type) {
|
|
const parsedType = getTypes(name, fn_type);
|
|
return (
|
|
parsedType.args.includes(from) && parsedType.types.includes(to)
|
|
);
|
|
} else {
|
|
return to === "any" && from === "any";
|
|
}
|
|
}
|
|
);
|
|
}
|
|
}; |