@webex/jsdoctrinetest
Version:
79 lines (73 loc) • 2.37 kB
JavaScript
;
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
_Object$defineProperty(exports, "__esModule", {
value: true
});
exports.build = build;
exports.test = test;
var _parseInt2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/parse-int"));
var _isNan = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/number/is-nan"));
var _parseFloat2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/parse-float"));
var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/typeof"));
var _template = _interopRequireDefault(require("@babel/template"));
var _types = require("@babel/types");
/*!
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
*/
var pattern = /^\s*?=>( async)?\s*/;
var tpl = (0, _template.default)("\n (function() {\n var assert = require('assert');\n assert.equal(result, ASSERTION);\n })();\n");
/**
* Indicates whether the specified value defines a literal assertion
* @param {string} value
* @returns {Boolean}
*/
function test(value) {
return pattern.test(value);
}
/**
* Builds a literal assertion
* @param {string} value
* @returns {ast}
*/
function build(value) {
return tpl({
ASSERTION: literal(value.replace(pattern, ''))
});
}
/**
* Coerces a string into a type
* @param {string} l
* @returns {Literal}
*/
function literal(l) {
/* eslint complexity: [0] */
// eslint-disable-next-line prefer-const
var f;
var i;
switch ((0, _typeof2.default)(l)) {
case 'boolean':
return (0, _types.booleanLiteral)(l);
case 'number':
return (0, _types.numericLiteral)(l);
case 'string':
if (l === 'true') {
return (0, _types.booleanLiteral)(true);
}
if (l === 'false') {
return (0, _types.booleanLiteral)(false);
}
i = (0, _parseInt2.default)(l, 10);
if (!(0, _isNan.default)(i)) {
return (0, _types.numericLiteral)(i);
}
f = (0, _parseFloat2.default)(l);
if (!(0, _isNan.default)(f)) {
return (0, _types.numericLiteral)(f);
}
return (0, _types.stringLiteral)(l);
default:
throw new Error('Unsupported literal type');
}
}
//# sourceMappingURL=literal.js.map