UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

47 lines (45 loc) 7.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Helper_1 = require("../Helper"); class MapFilterHelper extends Helper_1.Helper { constructor(options) { super(); this.map = options.map; } emit(sb, node, options) { if (!options.pushValue) { sb.emitOp(node, 'DROP'); return; } sb.emitSysCall(node, 'Neo.Iterator.Create'); sb.emitOp(node, 'NEWMAP'); sb.emitHelper(node, options, sb.helpers.rawIteratorReduce({ each: (innerOptions) => { sb.emitOp(node, 'ROT'); sb.emitOp(node, 'ROT'); sb.emitOp(node, 'TUCK'); sb.emitOp(node, 'OVER'); sb.emitOp(node, 'SWAP'); sb.emitHelper(node, innerOptions, sb.helpers.if({ condition: () => { this.map(innerOptions); }, whenTrue: () => { sb.emitOp(node, 'ROT'); sb.emitPushInt(node, 3); sb.emitOp(node, 'XTUCK'); sb.emitOp(node, 'ROT'); sb.emitOp(node, 'ROT'); sb.emitOp(node, 'SETITEM'); }, whenFalse: () => { sb.emitOp(node, 'DROP'); sb.emitOp(node, 'DROP'); }, })); }, })); } } exports.MapFilterHelper = MapFilterHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hcEZpbHRlckhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLHNDQUFtQztBQVFuQyxNQUFhLGVBQWdCLFNBQVEsZUFBTTtJQUd6QyxZQUFtQixPQUErQjtRQUNoRCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztJQUN6QixDQUFDO0lBRU0sSUFBSSxDQUFDLEVBQWlCLEVBQUUsSUFBYSxFQUFFLE9BQXFCO1FBQ2pFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQ3RCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRXhCLE9BQU87U0FDUjtRQUVELEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFFNUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFMUIsRUFBRSxDQUFDLFVBQVUsQ0FDWCxJQUFJLEVBQ0osT0FBTyxFQUNQLEVBQUUsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUM7WUFDM0IsSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBRXJCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUV2QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFFdkIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRXhCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUV4QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEIsRUFBRSxDQUFDLFVBQVUsQ0FDWCxJQUFJLEVBQ0osWUFBWSxFQUNaLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUNaLFNBQVMsRUFBRSxHQUFHLEVBQUU7d0JBR2QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDekIsQ0FBQztvQkFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFO3dCQUViLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO3dCQUV2QixFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBRXpCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO3dCQUV2QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzt3QkFFdkIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7b0JBQzdCLENBQUM7b0JBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRTt3QkFFZCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7b0JBQzFCLENBQUM7aUJBQ0YsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDO1NBQ0YsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF0RUQsMENBc0VDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL21hcC9NYXBGaWx0ZXJIZWxwZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vc2InO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi4vSGVscGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBNYXBGaWx0ZXJIZWxwZXJPcHRpb25zIHtcbiAgcmVhZG9ubHkgbWFwOiAob3B0aW9uczogVmlzaXRPcHRpb25zKSA9PiB2b2lkO1xufVxuXG4vLyBJbnB1dDogW21hcF1cbi8vIE91dHB1dDogW21hcF1cbmV4cG9ydCBjbGFzcyBNYXBGaWx0ZXJIZWxwZXIgZXh0ZW5kcyBIZWxwZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IG1hcDogKG9wdGlvbnM6IFZpc2l0T3B0aW9ucykgPT4gdm9pZDtcblxuICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogTWFwRmlsdGVySGVscGVyT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5tYXAgPSBvcHRpb25zLm1hcDtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBvcHRpb25zOiBWaXNpdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIW9wdGlvbnMucHVzaFZhbHVlKSB7XG4gICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBbaXRlcmF0b3JdXG4gICAgc2IuZW1pdFN5c0NhbGwobm9kZSwgJ05lby5JdGVyYXRvci5DcmVhdGUnKTtcbiAgICAvLyBbYWNjdW0sIGl0ZXJhdG9yXVxuICAgIHNiLmVtaXRPcChub2RlLCAnTkVXTUFQJyk7XG4gICAgLy8gW2FjY3VtXVxuICAgIHNiLmVtaXRIZWxwZXIoXG4gICAgICBub2RlLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHNiLmhlbHBlcnMucmF3SXRlcmF0b3JSZWR1Y2Uoe1xuICAgICAgICBlYWNoOiAoaW5uZXJPcHRpb25zKSA9PiB7XG4gICAgICAgICAgLy8gW3ZhbHVlLCBhY2N1bSwga2V5XVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnUk9UJyk7XG4gICAgICAgICAgLy8gW2tleSwgdmFsdWUsIGFjY3VtXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnUk9UJyk7XG4gICAgICAgICAgLy8gW2tleSwgdmFsLCBrZXksIGFjY3VtXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnVFVDSycpO1xuICAgICAgICAgIC8vIFt2YWwsIGtleSwgdmFsLCBrZXksIGFjY3VtXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnT1ZFUicpO1xuICAgICAgICAgIC8vIFtrZXksIHZhbCwgdmFsLCBrZXksIGFjY3VtXVxuICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnU1dBUCcpO1xuICAgICAgICAgIC8vIFthY2N1bV1cbiAgICAgICAgICBzYi5lbWl0SGVscGVyKFxuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgIGlubmVyT3B0aW9ucyxcbiAgICAgICAgICAgIHNiLmhlbHBlcnMuaWYoe1xuICAgICAgICAgICAgICBjb25kaXRpb246ICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBbYm9vbGVhbiwgdmFsLCBrZXksIGFjY3VtXVxuICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBuby1tYXAtd2l0aG91dC11c2FnZVxuICAgICAgICAgICAgICAgIHRoaXMubWFwKGlubmVyT3B0aW9ucyk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHdoZW5UcnVlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gW2FjY3VtLCB2YWwsIGtleV1cbiAgICAgICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1JPVCcpO1xuICAgICAgICAgICAgICAgIC8vIFszLCBhY2N1bSwgdmFsLCBrZXldXG4gICAgICAgICAgICAgICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMyk7XG4gICAgICAgICAgICAgICAgLy8gW2FjY3VtLCB2YWwsIGtleSwgYWNjdW1dXG4gICAgICAgICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdYVFVDSycpO1xuICAgICAgICAgICAgICAgIC8vIFtrZXksIGFjY3VtLCB2YWwsIGFjY3VtXVxuICAgICAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnUk9UJyk7XG4gICAgICAgICAgICAgICAgLy8gW3ZhbCwga2V5LCBhY2N1bSwgYWNjdW1dXG4gICAgICAgICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdST1QnKTtcbiAgICAgICAgICAgICAgICAvLyBbYWNjdW1dXG4gICAgICAgICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdTRVRJVEVNJyk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHdoZW5GYWxzZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFtrZXksIGFjY3VtXVxuICAgICAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnRFJPUCcpO1xuICAgICAgICAgICAgICAgIC8vIFthY2N1bV1cbiAgICAgICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=