Example #1
0
        public override async IAsyncEnumerable <Path> ComputeSelect(EvaluationContext ctx)
        {
            if (ListCandidate != null && Template != null)
            {
                // Expression select
                var select = ListCandidate.ComputeSelect(ctx);
                await foreach (var atom in select)
                {
                    yield return(atom);
                }

                // Expression paths
                var paths = ListCandidate.ComputePaths(ctx);
                await foreach (var path in paths)
                {
                    yield return(path.Append("Id"));
                }

                // Inner template select
                var scopedCtx = ctx.Clone();
                scopedCtx.SetLocalVariable(IteratorVariableName, new EvaluationVariable(
                                               eval: TemplateUtil.VariableThatThrows(IteratorVariableName),
                                               selectResolver: () => select,
                                               pathsResolver: () => paths
                                               ));

                await foreach (var atom in Template.ComputeSelect(scopedCtx))
                {
                    yield return(atom);
                }
            }
        }
Example #2
0
 public override IAsyncEnumerable <Path> ComputeSelect(EvaluationContext ctx)
 {
     return(ListCandidate.ComputeSelect(ctx));
 }