UNPKG

@webex/jsdoctrinetest

Version:
79 lines (73 loc) 2.37 kB
"use strict"; 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