/*** Copyright (c) Meta Platforms, Inc. and affiliates.** This source code is licensed under the MIT license found in the* LICENSE file in the root directory of this source tree.*/'use strict';function evalStringConcat(ast) {switch (ast.type) {case 'StringLiteral':case 'Literal': // ESLintreturn ast.value;case 'BinaryExpression': // `+`if (ast.operator !== '+') {throw new Error('Unsupported binary operator ' + ast.operator);}return evalStringConcat(ast.left) + evalStringConcat(ast.right);default:throw new Error('Unsupported type ' + ast.type);}}exports.evalStringConcat = evalStringConcat;function evalStringAndTemplateConcat(ast, args) {switch (ast.type) {case 'StringLiteral':return ast.value;case 'BinaryExpression': // `+`if (ast.operator !== '+') {throw new Error('Unsupported binary operator ' + ast.operator);}return (evalStringAndTemplateConcat(ast.left, args) +evalStringAndTemplateConcat(ast.right, args));case 'TemplateLiteral': {let elements = [];for (let i = 0; i < ast.quasis.length; i++) {const elementNode = ast.quasis[i];if (elementNode.type !== 'TemplateElement') {throw new Error('Unsupported type ' + ast.type);}elements.push(elementNode.value.cooked);}args.push(...ast.expressions);return elements.join('%s');}default:// Anything that's not a string is interpreted as an argument.args.push(ast);return '%s';}}exports.evalStringAndTemplateConcat = evalStringAndTemplateConcat;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。