Пример #1
0
        private static void applyBatchedNonGlobalTransforms(ContentPlan plan, TransformerRequirements requirements)
        {
            var policy = findBatchedTransformerPolicy(requirements);

            if (policy == null)
            {
                return;
            }


            var groups = new AssetGrouper <IContentSource>()
                         .GroupSubjects(plan.GetAllSources(), source => requirements.IsNextPolicy(source, policy));

            groups.Each(group =>
            {
                if (group.Count == 1)
                {
                    plan.ApplyTransform(group.Single(), policy.TransformerType);
                }
                else
                {
                    var combo = plan.Combine(group);
                    plan.ApplyTransform(combo, policy.TransformerType);
                }

                group.Each(s => requirements.DequeueTransformer(s, policy));
            });
        }
Пример #2
0
        private static ITransformerPolicy findBatchedTransformerPolicy(TransformerRequirements requirements)
        {
            var policies = requirements.AllBatchedTransformerPolicies();

            // There can only be one! -- gotta say it in the Highlander voice
            if (policies.Count() > 1)
            {
                throw new TooManyBatchedTransformationsException(policies.Select(x => x.TransformerType));
            }

            return policies.SingleOrDefault();
        }
Пример #3
0
        private static ITransformerPolicy findBatchedTransformerPolicy(TransformerRequirements requirements)
        {
            var policies = requirements.AllBatchedTransformerPolicies();

            // There can only be one! -- gotta say it in the Highlander voice
            if (policies.Count() > 1)
            {
                throw new TooManyBatchedTransformationsException(policies.Select(x => x.TransformerType));
            }

            return policies.SingleOrDefault();
        }
Пример #4
0
        private static void applyNonBatchedNonGlobalTransforms(IEnumerable<AssetFile> files, ContentPlan plan,
                                                               TransformerRequirements requirements)
        {
            foreach (var file in files)
            {
                var source = plan.FindForFile(file);
                var policies = requirements.PoliciesFor(file);

                while (policies.Any() && !policies.Peek().MustBeBatched())
                {
                    var policy = policies.Dequeue();
                    source = plan.ApplyTransform(source, policy.TransformerType);
                }
            }
        }
Пример #5
0
        public ContentPlan BuildPlanFor(string name)
        {
            var files = FindFiles(name);
            var requirements = new TransformerRequirements(_library);

            var plan = new ContentPlan(name, files);

            applyNonBatchedNonGlobalTransforms(files, plan, requirements);

            applyBatchedNonGlobalTransforms(plan, requirements);

            applyGlobalTransforms(plan);

            combineWhateverIsLeft(plan);

            return plan;
        }
Пример #6
0
        public ContentPlan BuildPlanFor(string name)
        {
            var files = FindFiles(name);
            var requirements = new TransformerRequirements(_library);

            var plan = new ContentPlan(name, files);

            applyNonBatchedNonGlobalTransforms(files, plan, requirements);

            applyBatchedNonGlobalTransforms(plan, requirements);

            applyGlobalTransforms(plan);

            combineWhateverIsLeft(plan);

            return plan;
        }
Пример #7
0
        private static void applyBatchedNonGlobalTransforms(ContentPlan plan, TransformerRequirements requirements)
        {
            var policy = findBatchedTransformerPolicy(requirements);
            if (policy == null) return;

            var groups = new AssetGrouper<IContentSource>()
                .GroupSubjects(plan.GetAllSources(), source => requirements.IsNextPolicy(source, policy));

            groups.Each(group =>
            {
                if (group.Count == 1)
                {
                    plan.ApplyTransform(group.Single(), policy.TransformerType);
                }
                else
                {
                    var combo = plan.Combine(group);
                    plan.ApplyTransform(combo, policy.TransformerType);
                }

                group.Each(s => requirements.DequeueTransformer(s, policy));
            });
        }
Пример #8
0
        private static void applyNonBatchedNonGlobalTransforms(IEnumerable<AssetFile> files, ContentPlan plan,
                                                               TransformerRequirements requirements)
        {
            foreach (var file in files)
            {
                var source = plan.FindForFile(file);
                var policies = requirements.PoliciesFor(file);

                while (policies.Any() && !policies.Peek().MustBeBatched())
                {
                    var policy = policies.Dequeue();
                    source = plan.ApplyTransform(source, policy.TransformerType);
                }
            }
        }