예제 #1
0
        public override IEnumerable <Node> DefaultReducer(IRule rule, INodeContext <Node> page)
        {
            if (page.HasLift())
            {
                return(page.GetLift());
            }

            if (rule.RuleType == RuleType.SingleMatch)
            {
                return(page.GetAll());
            }

            return(EnumSequence.Of(new CollectionNode(page.GetAll())));
        }
예제 #2
0
        public override IEnumerable <JsonValue> DefaultReducer(IRule rule, INodeContext <JsonValue> page)
        {
            if (page.HasLift())
            {
                return(page.GetLift());
            }

            return(page.GetAll());
        }
예제 #3
0
        public INode Reduce(IRule rule, INodeContext <INode> page)
        {
            // sequence with a single item => no sequence needed
            if (page.Count == 1)
            {
                return(page.Get(0));
            }

            var result = new ProtoRule(nameof(Core.Rules.Sequence), rule => new Core.Rules.Sequence(rule.RuleName, rule.All()));

            result.AddChildren(page.GetAll().Of <ProtoRule>());

            return(result);
        }
예제 #4
0
        public INode Reduce(IRule rule, INodeContext <INode> page)
        {
            // choice with a single item => no choice needed
            if (page.Count == 1)
            {
                return(page.Get(0));
            }

            var result = new ProtoRule(nameof(Core.Rules.Choice), rule => new Core.Rules.Choice(rule.RuleName, rule.All()));

            // filter out the "|" values
            result.AddChildren(page.GetAll().Of <ProtoRule>());

            return(result);
        }
예제 #5
0
 public override IEnumerable <INode> DefaultReducer(IRule rule, INodeContext <INode> page)
 {
     return(page.GetAll());
 }
예제 #6
0
 public override IEnumerable <CstNode> DefaultReducer(IRule rule, INodeContext <CstNode> page)
 {
     return(EnumSequence.Of(new CstNode(rule.Name, page.GetAll())));
 }