UNPKG

2.77 kBSource Map (JSON)View Raw
1{"version":3,"sources":["literal.js"],"names":["test","build","pattern","tpl","value","ASSERTION","literal","replace","l","f","i","parseInt","parseFloat","Error"],"mappings":";;;;;;;;;;;;;;QAyBgBA,I,GAAAA,I;QASAC,K,GAAAA,K;;AA9BhB;;;;AACA;;;;AALA;;;;AAWA,IAAMC,UAAU,qBAAhB;;AAEA,IAAMC,MAAM,yIAAZ;;AAOA;;;;;AAKO,SAASH,IAAT,CAAcI,KAAd,EAAqB;AAC1B,SAAOF,QAAQF,IAAR,CAAaI,KAAb,CAAP;AACD;;AAED;;;;;AAKO,SAASH,KAAT,CAAeG,KAAf,EAAsB;AAC3B,SAAOD,IAAI;AACTE,eAAWC,QAAQF,MAAMG,OAAN,CAAcL,OAAd,EAAuB,EAAvB,CAAR;AADF,GAAJ,CAAP;AAGD;;AAED;;;;;AAKA,SAASI,OAAT,CAAiBE,CAAjB,EAAoB;AAClB;AACA;AACA,MAAIC,UAAJ;AAAA,MAAOC,UAAP;AACA,iBAAeF,CAAf,uDAAeA,CAAf;AACE,SAAK,SAAL;AACE,aAAO,gCAAeA,CAAf,CAAP;AACF,SAAK,QAAL;AACE,aAAO,gCAAeA,CAAf,CAAP;AACF,SAAK,QAAL;AACE,UAAIA,MAAM,MAAV,EAAkB;AAChB,eAAO,gCAAe,IAAf,CAAP;AACD;AACD,UAAIA,MAAM,OAAV,EAAmB;AACjB,eAAO,gCAAe,KAAf,CAAP;AACD;AACDE,UAAIC,SAASH,CAAT,EAAY,EAAZ,CAAJ;AACA,UAAI,CAAC,qBAAaE,CAAb,CAAL,EAAsB;AACpB,eAAO,gCAAeA,CAAf,CAAP;AACD;AACDD,UAAIG,WAAWJ,CAAX,CAAJ;AACA,UAAI,CAAC,qBAAaC,CAAb,CAAL,EAAsB;AACpB,eAAO,gCAAeA,CAAf,CAAP;AACD;AACD,aAAO,+BAAcD,CAAd,CAAP;AACF;AACE,YAAM,IAAIK,KAAJ,CAAU,0BAAV,CAAN;AAtBJ;AAwBD","file":"literal.js","sourcesContent":["/*!\n * Copyright (c) 2015-2017 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport template from 'babel-template';\nimport {\n booleanLiteral,\n numericLiteral,\n stringLiteral\n} from 'babel-types';\n\nconst pattern = /^\\s*?=>( async)?\\s*/;\n\nconst tpl = template(`\n (function() {\n var assert = require('assert');\n assert.equal(result, ASSERTION);\n })();\n`);\n\n/**\n * Indicates whether the specified value defines a literal assertion\n * @param {string} value\n * @returns {Boolean}\n */\nexport function test(value) {\n return pattern.test(value);\n}\n\n/**\n * Builds a literal assertion\n * @param {string} value\n * @returns {ast}\n */\nexport function build(value) {\n return tpl({\n ASSERTION: literal(value.replace(pattern, ''))\n });\n}\n\n/**\n * Coerces a string into a type\n * @param {string} l\n * @returns {Literal}\n */\nfunction literal(l) {\n /* eslint complexity: [0] */\n // eslint-disable-next-line prefer-const\n let f, i;\n switch (typeof l) {\n case 'boolean':\n return booleanLiteral(l);\n case 'number':\n return numericLiteral(l);\n case 'string':\n if (l === 'true') {\n return booleanLiteral(true);\n }\n if (l === 'false') {\n return booleanLiteral(false);\n }\n i = parseInt(l, 10);\n if (!Number.isNaN(i)) {\n return numericLiteral(i);\n }\n f = parseFloat(l);\n if (!Number.isNaN(f)) {\n return numericLiteral(f);\n }\n return stringLiteral(l);\n default:\n throw new Error('Unsupported literal type');\n }\n}\n"]}
\No newline at end of file