Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将任意字符串插入sweet.js输出_Javascript_Sweet.js - Fatal编程技术网

Javascript 将任意字符串插入sweet.js输出

Javascript 将任意字符串插入sweet.js输出,javascript,sweet.js,Javascript,Sweet.js,如何在sweet.js生成的输出中插入任意字符串 这对于以编程方式执行基于不同条件的字符串不同的操作非常有用 例如,在下面代码的第25行,我想插入一个字符串作为结果 sweet.js代码: import { produceNormalParams } from './abc/produceNormalParams' import { produceParamChecks } from './abc/produceParamChecks' import { produce

如何在sweet.js生成的输出中插入任意字符串

这对于以编程方式执行基于不同条件的字符串不同的操作非常有用

例如,在下面代码的第25行,我想插入一个字符串作为结果

sweet.js代码:

    import { produceNormalParams } from './abc/produceNormalParams'
    import { produceParamChecks }  from './abc/produceParamChecks'
    import { produceInnerChecks }  from './abc/produceInnerChecks'

    syntax function = function(ctx) {
        let funcName   = ctx.next().value;
        let funcParams = ctx.next().value;
        let funcBody   = ctx.next().value;

        //produce the normal params array
        var normalParams = produceNormalParams(funcParams)

        //produce the checks
        var paramChecks = produceParamChecks(funcParams)

        //produce the original funcBody code
        var inner = produceInnerChecks(funcParams)

        var someArbitraryString = "console.log('hey')"

        //put them together as the final result
        var result = #`function ${funcName} ${normalParams} {
            ${someArbitraryString}
            ${paramChecks}
            ${inner}
        }`

        return result
    }
输入示例:

    module.exports = multiply

    function multiply(a:array,b,c:array) {
        return a * c
    }
示例输出:

    // Example Output
    module.exports = multiply;
    function multiply(a_31, b_32, c_33) {
        console.log('hey')
        if (Object.prototype.toString.call(a_31) !== "[object Array]") throw new Error("Must be array:" + a_31);
        if (Object.prototype.toString.call(c_33) !== "[object Array]") throw new Error("Must be array:" + c_33);
        return a_31 * c_33;
    }

虽然不能在语法模板中插入任意字符串,但可以插入其他语法模板

import { produceNormalParams } from './abc/produceNormalParams' for syntax;   
import { produceParamChecks }  from './abc/produceParamChecks' for syntax;
import { produceInnerChecks }  from './abc/produceInnerChecks' for syntax;

syntax function = function(ctx) {
    let funcName   = ctx.next().value;
    let funcParams = ctx.next().value;
    let funcBody   = ctx.next().value;

    //produce the normal params array
    var normalParams = produceNormalParams(funcParams);

    //produce the checks
    var paramChecks = produceParamChecks(funcParams);

    //produce the original funcBody code
    var inner = produceInnerChecks(funcParams);

    var someArbitrarySyntax = #`console.log('hey')`;

    //put them together as the final result
    var result = #`function ${funcName} ${normalParams} {
        ${someArbitrarySyntax}
        ${paramChecks}
        ${inner}
    }`;

    return result
}

注意import语句后面的语法。这些是编译时导入可用所必需的。

示例up起作用。但是,是否有可能获取通过编程生成的现有字符串。。。e、 函数getString{return'abcdef'}并将其转换为语法,我基本上希望将一些参数传递给库,让库返回字符串,然后插入该字符串,而不是在当前时间。如果它是您的库,并且您没有在任何其他上下文中使用它,那么您可以让它返回语法模板而不是字符串。