pattern.js 1.3 KB

123456789101112131415161718192021222324252627282930313233
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. const code_1 = require("../code");
  4. const util_1 = require("../../compile/util");
  5. const codegen_1 = require("../../compile/codegen");
  6. const error = {
  7. message: ({ schemaCode }) => (0, codegen_1.str) `must match pattern "${schemaCode}"`,
  8. params: ({ schemaCode }) => (0, codegen_1._) `{pattern: ${schemaCode}}`,
  9. };
  10. const def = {
  11. keyword: "pattern",
  12. type: "string",
  13. schemaType: "string",
  14. $data: true,
  15. error,
  16. code(cxt) {
  17. const { gen, data, $data, schema, schemaCode, it } = cxt;
  18. const u = it.opts.unicodeRegExp ? "u" : "";
  19. if ($data) {
  20. const { regExp } = it.opts.code;
  21. const regExpCode = regExp.code === "new RegExp" ? (0, codegen_1._) `new RegExp` : (0, util_1.useFunc)(gen, regExp);
  22. const valid = gen.let("valid");
  23. gen.try(() => gen.assign(valid, (0, codegen_1._) `${regExpCode}(${schemaCode}, ${u}).test(${data})`), () => gen.assign(valid, false));
  24. cxt.fail$data((0, codegen_1._) `!${valid}`);
  25. }
  26. else {
  27. const regExp = (0, code_1.usePattern)(cxt, schema);
  28. cxt.fail$data((0, codegen_1._) `!${regExp}.test(${data})`);
  29. }
  30. },
  31. };
  32. exports.default = def;
  33. //# sourceMappingURL=pattern.js.map