コード例 #1
0
        protected override IEnumerable <LessNode> EvaluateCore(EvaluationContext context)
        {
            IEnumerable <MediaQuery> CombineQueries(IEnumerable <MediaQuery> outer, IEnumerable <MediaQuery> inner)
            {
                foreach (var innerQuery in inner)
                {
                    foreach (var outerQuery in outer)
                    {
                        yield return(new MediaQuery(outerQuery.FeatureQueries.Concat(innerQuery.FeatureQueries)));
                    }
                }
            }

            var evaluatedQueries = mediaQueries.Select(q => q.EvaluateSingle <MediaQuery>(context)).ToArray();

            using (context.BeginExtenderScope())
            {
                (var mediaBlocks, var statements) = Block.Evaluate(context).Split <MediaBlock, Statement>();

                yield return(new MediaBlock(evaluatedQueries, new RuleBlock(statements), context.Extensions));

                foreach (var mediaBlock in mediaBlocks)
                {
                    yield return(new MediaBlock(CombineQueries(evaluatedQueries, mediaBlock.mediaQueries),
                                                mediaBlock.Block, context.Extensions));
                }
            }
        }