Skip to content

Commit

Permalink
feat(size): add validator for element size
Browse files Browse the repository at this point in the history
  • Loading branch information
TomokiMiyauci committed May 18, 2023
1 parent c870c00 commit dccc945
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions validators/iterable/size.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// Copyright 2023-latest Tomoki Miyauchi. All rights reserved. MIT license.
// This module is browser compatible.

import { getSize } from "./utils.ts";
import { format, ScalarValidator } from "../../utils.ts";
import error from "../error.json" assert { type: "json" };

export class SizeValidator extends ScalarValidator<Iterable<unknown>> {
constructor(public size: number) {
super();
super.expect(({ input }) =>
format(error.should_be_but, this, getSize(input))
);
}

override is(input: Iterable<unknown>): boolean {
return getSize(input) === this.size;
}

toString(): string {
return `size of ${this.size}`;
}
}

0 comments on commit dccc945

Please sign in to comment.