1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _isNan = require('babel-runtime/core-js/number/is-nan');
|
8 |
|
9 | var _isNan2 = _interopRequireDefault(_isNan);
|
10 |
|
11 | var _typeof2 = require('babel-runtime/helpers/typeof');
|
12 |
|
13 | var _typeof3 = _interopRequireDefault(_typeof2);
|
14 |
|
15 | exports.test = test;
|
16 | exports.build = build;
|
17 |
|
18 | var _babelTemplate = require('babel-template');
|
19 |
|
20 | var _babelTemplate2 = _interopRequireDefault(_babelTemplate);
|
21 |
|
22 | var _babelTypes = require('babel-types');
|
23 |
|
24 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 | var pattern = /^\s*?=>( async)?\s*/;
|
31 |
|
32 | var tpl = (0, _babelTemplate2.default)('\n (function() {\n var assert = require(\'assert\');\n assert.equal(result, ASSERTION);\n })();\n');
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 | function test(value) {
|
40 | return pattern.test(value);
|
41 | }
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 | function build(value) {
|
49 | return tpl({
|
50 | ASSERTION: literal(value.replace(pattern, ''))
|
51 | });
|
52 | }
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 |
|
59 | function literal(l) {
|
60 |
|
61 |
|
62 | var f = void 0,
|
63 | i = void 0;
|
64 | switch (typeof l === 'undefined' ? 'undefined' : (0, _typeof3.default)(l)) {
|
65 | case 'boolean':
|
66 | return (0, _babelTypes.booleanLiteral)(l);
|
67 | case 'number':
|
68 | return (0, _babelTypes.numericLiteral)(l);
|
69 | case 'string':
|
70 | if (l === 'true') {
|
71 | return (0, _babelTypes.booleanLiteral)(true);
|
72 | }
|
73 | if (l === 'false') {
|
74 | return (0, _babelTypes.booleanLiteral)(false);
|
75 | }
|
76 | i = parseInt(l, 10);
|
77 | if (!(0, _isNan2.default)(i)) {
|
78 | return (0, _babelTypes.numericLiteral)(i);
|
79 | }
|
80 | f = parseFloat(l);
|
81 | if (!(0, _isNan2.default)(f)) {
|
82 | return (0, _babelTypes.numericLiteral)(f);
|
83 | }
|
84 | return (0, _babelTypes.stringLiteral)(l);
|
85 | default:
|
86 | throw new Error('Unsupported literal type');
|
87 | }
|
88 | }
|
89 |
|