@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
36 lines (34 loc) • 4.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Helper_1 = require("../Helper");
class CreateConstructArrayHelper extends Helper_1.Helper {
constructor({ body, withScope }) {
super();
this.body = body;
this.withScope = withScope;
}
emit(sb, node, outerOptions) {
if (!outerOptions.pushValue) {
return;
}
const emit = (options) => {
this.body(sb.noPushValueOptions(options));
sb.emitHelper(node, sb.pushValueOptions(options), sb.helpers.wrapUndefined);
sb.emitHelper(node, options, sb.helpers.return);
};
sb.emitHelper(node, outerOptions, sb.helpers.createFunctionArray({
body: (innerOptions) => {
if (this.withScope) {
sb.withScope(node, innerOptions, (options) => {
emit(options);
});
}
else {
emit(innerOptions);
}
},
}));
}
}
exports.CreateConstructArrayHelper = CreateConstructArrayHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNyZWF0ZUNvbnN0cnVjdEFycmF5SGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBSUEsc0NBQW1DO0FBU25DLE1BQWEsMEJBQTJCLFNBQVEsZUFBTTtJQUlwRCxZQUFtQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQXFDO1FBQ3ZFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVNLElBQUksQ0FBQyxFQUFpQixFQUFFLElBQWEsRUFBRSxZQUEwQjtRQUN0RSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRTtZQUMzQixPQUFPO1NBQ1I7UUFFRCxNQUFNLElBQUksR0FBRyxDQUFDLE9BQXFCLEVBQUUsRUFBRTtZQUVyQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBRTFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRTVFLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQztRQUVGLEVBQUUsQ0FBQyxVQUFVLENBQ1gsSUFBSSxFQUNKLFlBQVksRUFDWixFQUFFLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDO1lBQzdCLElBQUksRUFBRSxDQUFDLFlBQVksRUFBRSxFQUFFO2dCQUNyQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQ2xCLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO3dCQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ2hCLENBQUMsQ0FBQyxDQUFDO2lCQUNKO3FCQUFNO29CQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztpQkFDcEI7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF4Q0QsZ0VBd0NDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL2Z1bmN0aW9uL0NyZWF0ZUNvbnN0cnVjdEFycmF5SGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vc2InO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vSGVscGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVDb25zdHJ1Y3RBcnJheUhlbHBlck9wdGlvbnMge1xuICByZWFkb25seSBib2R5OiAob3B0aW9uczogVmlzaXRPcHRpb25zKSA9PiB2b2lkO1xuICByZWFkb25seSB3aXRoU2NvcGU6IGJvb2xlYW47XG59XG5cbi8vIElucHV0OiBbXVxuLy8gT3V0cHV0OiBbZmFycl1cbmV4cG9ydCBjbGFzcyBDcmVhdGVDb25zdHJ1Y3RBcnJheUhlbHBlciBleHRlbmRzIEhlbHBlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYm9keTogKG9wdGlvbnM6IFZpc2l0T3B0aW9ucykgPT4gdm9pZDtcbiAgcHJpdmF0ZSByZWFkb25seSB3aXRoU2NvcGU6IGJvb2xlYW47XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHsgYm9keSwgd2l0aFNjb3BlIH06IENyZWF0ZUNvbnN0cnVjdEFycmF5SGVscGVyT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5ib2R5ID0gYm9keTtcbiAgICB0aGlzLndpdGhTY29wZSA9IHdpdGhTY29wZTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBvdXRlck9wdGlvbnM6IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghb3V0ZXJPcHRpb25zLnB1c2hWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVtaXQgPSAob3B0aW9uczogVmlzaXRPcHRpb25zKSA9PiB7XG4gICAgICAvLyBbXVxuICAgICAgdGhpcy5ib2R5KHNiLm5vUHVzaFZhbHVlT3B0aW9ucyhvcHRpb25zKSk7XG4gICAgICAvLyBbdW5kZWZpbmVkVmFsXVxuICAgICAgc2IuZW1pdEhlbHBlcihub2RlLCBzYi5wdXNoVmFsdWVPcHRpb25zKG9wdGlvbnMpLCBzYi5oZWxwZXJzLndyYXBVbmRlZmluZWQpO1xuICAgICAgLy8gW11cbiAgICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy5yZXR1cm4pO1xuICAgIH07XG5cbiAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgbm9kZSxcbiAgICAgIG91dGVyT3B0aW9ucyxcbiAgICAgIHNiLmhlbHBlcnMuY3JlYXRlRnVuY3Rpb25BcnJheSh7XG4gICAgICAgIGJvZHk6IChpbm5lck9wdGlvbnMpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy53aXRoU2NvcGUpIHtcbiAgICAgICAgICAgIHNiLndpdGhTY29wZShub2RlLCBpbm5lck9wdGlvbnMsIChvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICAgIGVtaXQob3B0aW9ucyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW1pdChpbm5lck9wdGlvbnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==