mirror of
https://github.com/hsjobeki/noogle.git
synced 2024-12-28 08:26:53 +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";
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
}
|
||
|
};
|