ts-cast
Version:
Runtime typechecking
29 lines (28 loc) • 1.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.text = exports.textList = exports.textNum = exports.textInt = void 0;
var array_1 = require("./array");
var engine_1 = require("../engine");
exports.textInt = (0, engine_1.createCaster)('text.integer', function (value) { return typeof value === 'string' && value !== ''; }, function (value, context, reportError) {
var parsed = +value;
if (Number.isInteger(parsed))
return parsed;
return reportError("text.integer is expected".concat(context ? " in ".concat(context) : '', " but \"").concat(value, "\" received."), context);
});
exports.textNum = (0, engine_1.createCaster)('text.number', function (value) { return typeof value === 'string' && value !== ''; }, function (value, context, reportError) {
var parsed = +value;
if (!Number.isNaN(parsed))
return parsed;
return reportError("text.number is expected".concat(context ? " in ".concat(context) : '', " but \"").concat(value, "\" received."), context);
});
var textList = function (itemCaster, separator) {
if (separator === void 0) { separator = ','; }
var castArray = (0, array_1.array)(itemCaster);
return (0, engine_1.createCaster)("list(".concat(itemCaster.name, ")"), function (value) { return typeof value === 'string'; }, function (value, context, reportError) { return castArray(value === '' ? [] : value.split(separator), context, reportError); });
};
exports.textList = textList;
exports.text = {
integer: exports.textInt,
number: exports.textNum,
list: exports.textList,
};