UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

45 lines (43 loc) 6.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Helper_1 = require("../Helper"); class ArrMapHelper extends Helper_1.Helper { constructor(options) { super(); this.map = options.map; this.withIndex = options.withIndex || false; } emit(sb, node, options) { if (this.withIndex) { sb.emitSysCall(node, 'Neo.Iterator.Create'); sb.emitPushInt(node, 0); sb.emitOp(node, 'NEWARRAY'); sb.emitHelper(node, options, sb.helpers.rawIteratorReduce({ each: (innerOptions) => { sb.emitOp(node, 'ROT'); sb.emitOp(node, 'ROT'); sb.emitOp(node, 'SWAP'); this.map(innerOptions); sb.emitOp(node, 'OVER'); sb.emitOp(node, 'SWAP'); sb.emitOp(node, 'APPEND'); }, })); } else { sb.emitSysCall(node, 'Neo.Enumerator.Create'); sb.emitPushInt(node, 0); sb.emitOp(node, 'NEWARRAY'); sb.emitHelper(node, options, sb.helpers.rawEnumeratorReduce({ each: (innerOptions) => { sb.emitOp(node, 'TUCK'); sb.emitOp(node, 'SWAP'); this.map(innerOptions); sb.emitOp(node, 'APPEND'); }, })); } } } exports.ArrMapHelper = ArrMapHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFyck1hcEhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLHNDQUFtQztBQVNuQyxNQUFhLFlBQWEsU0FBUSxlQUFNO0lBSXRDLFlBQW1CLE9BQTRCO1FBQzdDLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUM7SUFDOUMsQ0FBQztJQUVNLElBQUksQ0FBQyxFQUFpQixFQUFFLElBQWEsRUFBRSxPQUFxQjtRQUNqRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFFbEIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQztZQUU1QyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztZQUU1QixFQUFFLENBQUMsVUFBVSxDQUNYLElBQUksRUFDSixPQUFPLEVBQ1AsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztnQkFDM0IsSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUU7b0JBRXJCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUV2QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFFdkIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7b0JBR3hCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBRXZCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzVCLENBQUM7YUFDRixDQUFDLENBQ0gsQ0FBQztTQUNIO2FBQU07WUFFTCxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBRTlDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRTVCLEVBQUUsQ0FBQyxVQUFVLENBQ1gsSUFBSSxFQUNKLE9BQU8sRUFDUCxFQUFFLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDO2dCQUM3QixJQUFJLEVBQUUsQ0FBQyxZQUFZLEVBQUUsRUFBRTtvQkFFckIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7b0JBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUd4QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUV2QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDNUIsQ0FBQzthQUNGLENBQUMsQ0FDSCxDQUFDO1NBQ0g7SUFDSCxDQUFDO0NBQ0Y7QUFyRUQsb0NBcUVDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL2Fyci9BcnJNYXBIZWxwZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vc2InO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vSGVscGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBBcnJNYXBIZWxwZXJPcHRpb25zIHtcbiAgcmVhZG9ubHkgbWFwOiAob3B0aW9uczogVmlzaXRPcHRpb25zKSA9PiB2b2lkO1xuICByZWFkb25seSB3aXRoSW5kZXg/OiBib29sZWFuO1xufVxuXG4vLyBJbnB1dDogW2Fycl1cbi8vIE91dHB1dDogW2Fycl1cbmV4cG9ydCBjbGFzcyBBcnJNYXBIZWxwZXIgZXh0ZW5kcyBIZWxwZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IG1hcDogKG9wdGlvbnM6IFZpc2l0T3B0aW9ucykgPT4gdm9pZDtcbiAgcHJpdmF0ZSByZWFkb25seSB3aXRoSW5kZXg6IGJvb2xlYW47XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEFyck1hcEhlbHBlck9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubWFwID0gb3B0aW9ucy5tYXA7XG4gICAgdGhpcy53aXRoSW5kZXggPSBvcHRpb25zLndpdGhJbmRleCB8fCBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBvcHRpb25zOiBWaXNpdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy53aXRoSW5kZXgpIHtcbiAgICAgIC8vIFtpdGVyYXRvcl1cbiAgICAgIHNiLmVtaXRTeXNDYWxsKG5vZGUsICdOZW8uSXRlcmF0b3IuQ3JlYXRlJyk7XG4gICAgICAvLyBbMCwgaXRlcmF0b3JdXG4gICAgICBzYi5lbWl0UHVzaEludChub2RlLCAwKTtcbiAgICAgIC8vIFthY2N1bSwgaXRlcmF0b3JdXG4gICAgICBzYi5lbWl0T3Aobm9kZSwgJ05FV0FSUkFZJyk7XG4gICAgICAvLyBbYWNjdW1dXG4gICAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgICBub2RlLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBzYi5oZWxwZXJzLnJhd0l0ZXJhdG9yUmVkdWNlKHtcbiAgICAgICAgICBlYWNoOiAoaW5uZXJPcHRpb25zKSA9PiB7XG4gICAgICAgICAgICAvLyBbdmFsLCBhY2N1bSwgaWR4XVxuICAgICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdST1QnKTtcbiAgICAgICAgICAgIC8vIFtpZHgsIHZhbCwgYWNjdW1dXG4gICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1JPVCcpO1xuICAgICAgICAgICAgLy8gW3ZhbCwgaWR4LCBhY2N1bV1cbiAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgICAgICAgICAgLy8gW3ZhbCwgYWNjdW1dXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFwLXdpdGhvdXQtdXNhZ2VcbiAgICAgICAgICAgIHRoaXMubWFwKGlubmVyT3B0aW9ucyk7XG4gICAgICAgICAgICAvLyBbYWNjdW0sIHZhbCwgYWNjdW1dXG4gICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ09WRVInKTtcbiAgICAgICAgICAgIC8vIFt2YWwsIGFjY3VtLCBhY2N1bV1cbiAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgICAgICAgICAgLy8gW2FjY3VtXVxuICAgICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdBUFBFTkQnKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFtlbnVtZXJhdG9yXVxuICAgICAgc2IuZW1pdFN5c0NhbGwobm9kZSwgJ05lby5FbnVtZXJhdG9yLkNyZWF0ZScpO1xuICAgICAgLy8gWzAsIGVudW1lcmF0b3JdXG4gICAgICBzYi5lbWl0UHVzaEludChub2RlLCAwKTtcbiAgICAgIC8vIFthY2N1bSwgZW51bWVyYXRvcl1cbiAgICAgIHNiLmVtaXRPcChub2RlLCAnTkVXQVJSQVknKTtcbiAgICAgIC8vIFthY2N1bV1cbiAgICAgIHNiLmVtaXRIZWxwZXIoXG4gICAgICAgIG5vZGUsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIHNiLmhlbHBlcnMucmF3RW51bWVyYXRvclJlZHVjZSh7XG4gICAgICAgICAgZWFjaDogKGlubmVyT3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgLy8gW2FjY3VtLCB2YWwsIGFjY3VtXVxuICAgICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdUVUNLJyk7XG4gICAgICAgICAgICAvLyBbdmFsLCBhY2N1bSwgYWNjdW1dXG4gICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1NXQVAnKTtcbiAgICAgICAgICAgIC8vIFt2YWwsIGFjY3VtLCBhY2N1bV1cbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1tYXAtd2l0aG91dC11c2FnZVxuICAgICAgICAgICAgdGhpcy5tYXAoaW5uZXJPcHRpb25zKTtcbiAgICAgICAgICAgIC8vIFthY2N1bV1cbiAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnQVBQRU5EJyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19