progress with versioning
This commit is contained in:
parent
618cdf7314
commit
e106ced1ec
8 changed files with 151 additions and 238 deletions
50
lib/versioning/compare.js
Normal file
50
lib/versioning/compare.js
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
import { compareDynamic } from "../compare/dynamic.js";
|
||||
import { compareSymbols, compareInts } from "../compare/primitives.js";
|
||||
import { makeTypeParser } from "../parser/type_parser.js";
|
||||
import { newDynamic } from "../primitives/dynamic.js";
|
||||
import { makeEnumCompareFn } from "../structures/enum.js";
|
||||
import { makeStructCompareFn } from "../structures/struct.js";
|
||||
import { Slot, Transformation, Value, Write } from "./value_slot.js";
|
||||
|
||||
|
||||
// comparison functions are mutually recursive...
|
||||
|
||||
export const compareSlot = makeEnumCompareFn([
|
||||
{ l: "new", r: () => compareSymbols },
|
||||
{ l: "write", r: () => compareWrite },
|
||||
]);
|
||||
|
||||
export const compareWrite = makeStructCompareFn([
|
||||
{ l: "slot", r: () => compareSlot },
|
||||
{ l: "value", r: () => compareValue },
|
||||
{ l: "depth", r: () => compareInts },
|
||||
]);
|
||||
|
||||
export const compareTransformation = makeStructCompareFn([
|
||||
{ l: "input", r: () => compareValue },
|
||||
{ l: "fn", r: () => compareValue },
|
||||
{ l: "output", r: () => compareDynamic },
|
||||
]);
|
||||
|
||||
export const compareValue = makeEnumCompareFn([
|
||||
{ l: "literal", r: () => compareDynamic },
|
||||
{ l: "read", r: () => compareWrite },
|
||||
{ l: "transform", r: () => compareTransformation },
|
||||
]);
|
||||
|
||||
const mkType = makeTypeParser({
|
||||
extraPrimitives: [
|
||||
["Value", Value],
|
||||
["Slot" , Slot ],
|
||||
["Write", Write],
|
||||
["Transformation", Transformation],
|
||||
],
|
||||
});
|
||||
|
||||
export const ModuleVersioningCompare = [
|
||||
// comparison
|
||||
["compareSlot" , newDynamic(compareSlot )(mkType("Slot -> Slot -> Ordering"))],
|
||||
["compareValue", newDynamic(compareValue)(mkType("Value -> Value -> Ordering"))],
|
||||
["compareWrite", newDynamic(compareWrite)(mkType("Write -> Write -> Ordering"))],
|
||||
["compareTransformation", newDynamic(compareTransformation)(mkType("Transformation -> Transformation -> Ordering"))],
|
||||
];
|
||||
Loading…
Add table
Add a link
Reference in a new issue