0
sweet.jsが生成する出力に任意の文字列を挿入するにはどうすればよいですか?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;
}
サンプルアップが機能します。しかし、プログラムで生成された既存の文字列を取得することは可能ですか?私は基本的にいくつかのパラメータをライブラリに渡してライブラリに文字列を返し、その文字列を挿入したいとします。 –
現時点ではありません。それがあなたのライブラリで、他のコンテキストでそれを使用していない場合は、文字列の代わりに構文テンプレートを返すことができます。 –