UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

57 lines (55 loc) 8.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Helper_1 = require("../Helper"); class ArrFilterHelper extends Helper_1.Helper { constructor(options) { super(); this.map = options.map; this.withIndex = options.withIndex || false; } emit(sb, node, options) { const handleResult = (innerOptions) => { sb.emitHelper(node, innerOptions, sb.helpers.if({ condition: () => { this.map(innerOptions); }, whenTrue: () => { sb.emitOp(node, 'TUCK'); sb.emitOp(node, 'SWAP'); sb.emitOp(node, 'APPEND'); }, whenFalse: () => { sb.emitOp(node, 'NIP'); }, })); }; 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, 'TUCK'); sb.emitPushInt(node, 3); sb.emitOp(node, 'ROLL'); sb.emitOp(node, 'SWAP'); handleResult(innerOptions); }, })); } 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, 'OVER'); handleResult(innerOptions); }, })); } } } exports.ArrFilterHelper = ArrFilterHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFDO2dCQUM3QixDQUFDO2FBQ0YsQ0FBQyxDQUNILENBQUM7U0FDSDtJQUNILENBQUM7Q0FDRjtBQXZGRCwwQ0F1RkMiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9oZWxwZXIvYXJyL0FyckZpbHRlckhlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuLi9IZWxwZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFyckZpbHRlckhlbHBlck9wdGlvbnMge1xuICByZWFkb25seSBtYXA6IChvcHRpb25zOiBWaXNpdE9wdGlvbnMpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IHdpdGhJbmRleD86IGJvb2xlYW47XG59XG5cbi8vIElucHV0OiBbYXJyXVxuLy8gT3V0cHV0OiBbYXJyXVxuZXhwb3J0IGNsYXNzIEFyckZpbHRlckhlbHBlciBleHRlbmRzIEhlbHBlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWFwOiAob3B0aW9uczogVmlzaXRPcHRpb25zKSA9PiB2b2lkO1xuICBwcml2YXRlIHJlYWRvbmx5IHdpdGhJbmRleDogYm9vbGVhbjtcblxuICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogQXJyRmlsdGVySGVscGVyT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5tYXAgPSBvcHRpb25zLm1hcDtcbiAgICB0aGlzLndpdGhJbmRleCA9IG9wdGlvbnMud2l0aEluZGV4IHx8IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGVtaXQoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IHRzLk5vZGUsIG9wdGlvbnM6IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IGhhbmRsZVJlc3VsdCA9IChpbm5lck9wdGlvbnM6IFZpc2l0T3B0aW9ucykgPT4ge1xuICAgICAgc2IuZW1pdEhlbHBlcihcbiAgICAgICAgbm9kZSxcbiAgICAgICAgaW5uZXJPcHRpb25zLFxuICAgICAgICBzYi5oZWxwZXJzLmlmKHtcbiAgICAgICAgICBjb25kaXRpb246ICgpID0+IHtcbiAgICAgICAgICAgIC8vIFtib29sZWFuLCBhY2N1bSwgdmFsXVxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLW1hcC13aXRob3V0LXVzYWdlXG4gICAgICAgICAgICB0aGlzLm1hcChpbm5lck9wdGlvbnMpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgd2hlblRydWU6ICgpID0+IHtcbiAgICAgICAgICAgIC8vIFthY2N1bSwgdmFsLCBhY2N1bV1cbiAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnVFVDSycpO1xuICAgICAgICAgICAgLy8gW3ZhbCwgYWNjdW0sIGFjY3VtXVxuICAgICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdTV0FQJyk7XG4gICAgICAgICAgICAvLyBbYWNjdW1dXG4gICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0FQUEVORCcpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgd2hlbkZhbHNlOiAoKSA9PiB7XG4gICAgICAgICAgICAvLyBbYWNjdW1dXG4gICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ05JUCcpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMud2l0aEluZGV4KSB7XG4gICAgICAvLyBbaXRlcmF0b3JdXG4gICAgICBzYi5lbWl0U3lzQ2FsbChub2RlLCAnTmVvLkl0ZXJhdG9yLkNyZWF0ZScpO1xuICAgICAgLy8gWzAsIGl0ZXJhdG9yXVxuICAgICAgc2IuZW1pdFB1c2hJbnQobm9kZSwgMCk7XG4gICAgICAvLyBbYWNjdW0sIGl0ZXJhdG9yXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdORVdBUlJBWScpO1xuICAgICAgLy8gW2FjY3VtXVxuICAgICAgc2IuZW1pdEhlbHBlcihcbiAgICAgICAgbm9kZSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgc2IuaGVscGVycy5yYXdJdGVyYXRvclJlZHVjZSh7XG4gICAgICAgICAgZWFjaDogKGlubmVyT3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgLy8gW3ZhbCwgYWNjdW0sIGlkeF1cbiAgICAgICAgICAgIHNiLmVtaXRPcChub2RlLCAnUk9UJyk7XG4gICAgICAgICAgICAvLyBbdmFsLCBhY2N1bSwgdmFsLCBpZHhdXG4gICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1RVQ0snKTtcbiAgICAgICAgICAgIC8vIFszLCB2YWwsIGFjY3VtLCB2YWwsIGlkeF1cbiAgICAgICAgICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDMpO1xuICAgICAgICAgICAgLy8gW2lkeCwgdmFsLCBhY2N1bSwgdmFsXVxuICAgICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdST0xMJyk7XG4gICAgICAgICAgICAvLyBbdmFsLCBpZHgsIGFjY3VtLCB2YWxdXG4gICAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ1NXQVAnKTtcbiAgICAgICAgICAgIC8vIFthY2N1bV1cbiAgICAgICAgICAgIGhhbmRsZVJlc3VsdChpbm5lck9wdGlvbnMpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gW2VudW1lcmF0b3JdXG4gICAgICBzYi5lbWl0U3lzQ2FsbChub2RlLCAnTmVvLkVudW1lcmF0b3IuQ3JlYXRlJyk7XG4gICAgICAvLyBbMCwgZW51bWVyYXRvcl1cbiAgICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIDApO1xuICAgICAgLy8gW2FjY3VtLCBlbnVtZXJhdG9yXVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdORVdBUlJBWScpO1xuICAgICAgLy8gW2FjY3VtXVxuICAgICAgc2IuZW1pdEhlbHBlcihcbiAgICAgICAgbm9kZSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgc2IuaGVscGVycy5yYXdFbnVtZXJhdG9yUmVkdWNlKHtcbiAgICAgICAgICBlYWNoOiAoaW5uZXJPcHRpb25zKSA9PiB7XG4gICAgICAgICAgICAvLyBbdmFsLCBhY2N1bSwgdmFsXVxuICAgICAgICAgICAgc2IuZW1pdE9wKG5vZGUsICdPVkVSJyk7XG4gICAgICAgICAgICAvLyBbYWNjdW1dXG4gICAgICAgICAgICBoYW5kbGVSZXN1bHQoaW5uZXJPcHRpb25zKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=