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)); }); }
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(); }
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(); }
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); } } }
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; }
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; }
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)); }); }
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); } } }