예제 #1
0
 public PreCompiledGroupManager(PreCompiledResourceReport resourceReport, IResourceGroupManager inner)
 {
     _inner = inner;
     PopulateResourceUrlMap(resourceReport);
     Consolidate = true;
     MutuallyExclusiveGroups = inner.MutuallyExclusiveGroups;
 }
예제 #2
0
 internal DependencyManager(IResourceFinder resourceFinder, IDependencyCache dependencyCache, IResourceGroupManager scriptGroups, IResourceGroupManager styleGroups)
 {
     _resourceFinder  = resourceFinder;
     _dependencyCache = dependencyCache;
     _scriptGroups    = scriptGroups;
     _styleGroups     = styleGroups;
 }
예제 #3
0
        private IEnumerable <PreCompiledResourceGroup> ConsolidateGroupsInternal(ResourceType resourceType,
                                                                                 IResourceGroupManager groupTemplates,
                                                                                 Action <ICompiledResource> onCompiled)
        {
            if (!groupTemplates.Any())
            {
                return(Enumerable.Empty <PreCompiledResourceGroup>());
            }

            var allResources = _finder.FindResources(resourceType);

            var preConsolidatedGroups = new List <PreCompiledResourceGroup>();

            groupTemplates.EachGroup(allResources, group =>
            {
                var consolidatedResource = CompileGroup(group);
                onCompiled(consolidatedResource);
                var preConsolidatedGroup = new PreCompiledResourceGroup
                {
                    ConsolidatedUrl = group.ConsolidatedUrl,
                    Resources       = consolidatedResource.Resources.Select(resource => resource.VirtualPath).ToList()
                };
                preConsolidatedGroups.Add(preConsolidatedGroup);
            });

            return(preConsolidatedGroups);
        }
예제 #4
0
 public PreCompiledGroupManager(PreCompiledResourceReport resourceReport, IResourceGroupManager inner)
 {
     _inner = inner;
     PopulateResourceUrlMap(resourceReport);
     Consolidate             = true;
     MutuallyExclusiveGroups = inner.MutuallyExclusiveGroups;
 }
예제 #5
0
 public static void AddRange(this IResourceGroupManager groupManager, IEnumerable <IResourceGroupTemplate> templates)
 {
     foreach (var template in templates)
     {
         groupManager.Add(template);
     }
 }
예제 #6
0
 public void LoadPreCompilationReport(PreCompilationReport preCompilationReport)
 {
     _scriptGroups = new PreCompiledGroupManager(preCompilationReport.Scripts, _scriptGroups);
     _styleGroups  = new PreCompiledGroupManager(preCompilationReport.Stylesheets, _styleGroups);
     _dependencyManager.SetCache(new PreCompiledDependencyCache(preCompilationReport.Dependencies));
     Version     = preCompilationReport.Version;
     PreCompiled = true;
 }
예제 #7
0
 internal DependencyManager(IResourceFinder resourceFinder, IDependencyCache dependencyCache, IResourceGroupManager scriptGroups, IResourceGroupManager styleGroups, ResourceMode resourceMode)
 {
     _resourceFinder = resourceFinder;
     _dependencyCache = dependencyCache;
     _scriptGroups = scriptGroups;
     _styleGroups = styleGroups;
     _resourceMode = resourceMode;
 }
예제 #8
0
 public ResourceCompiler(ContentFilterPipelineMap contentFilterPipelineMap, DependencyManager dependencyManager, IResourceGroupManager scriptGroups, IResourceGroupManager styleGroups, IResourceFinder finder, ResourceMode resourceMode)
 {
     _contentFilterPipelineMap = contentFilterPipelineMap;
     _dependencyManager = dependencyManager;
     _scriptGroups = scriptGroups;
     _styleGroups = styleGroups;
     _finder = finder;
     _resourceMode = resourceMode;
 }
예제 #9
0
 public ResourceCompiler(ContentFilterPipelineMap contentFilterPipelineMap, DependencyManager dependencyManager, IResourceGroupManager scriptGroups, IResourceGroupManager styleGroups, IResourceFinder finder, ResourceMode resourceMode)
 {
     _contentFilterPipelineMap = contentFilterPipelineMap;
     _dependencyManager        = dependencyManager;
     _scriptGroups             = scriptGroups;
     _styleGroups  = styleGroups;
     _finder       = finder;
     _resourceMode = resourceMode;
 }
예제 #10
0
        private bool IsConsolidatedUrl(string virtualPath, IResourceGroupManager groupTemplates, out IEnumerable <IResource> resourcesInGroup)
        {
            var group = groupTemplates.GetGroupOrDefault(virtualPath, _resourceFinder);

            if (group == null)
            {
                resourcesInGroup = null;
                return(false);
            }

            resourcesInGroup = group.GetResources().SortByDependencies(this);
            return(true);
        }
예제 #11
0
        internal AssmanContext(ResourceMode resourceMode)
        {
            var resourceCache = ResourceCacheFactory.GetCache(resourceMode);

            _scriptGroups = ResourceGroupManager.GetInstance(resourceMode, resourceCache);
            _styleGroups  = ResourceGroupManager.GetInstance(resourceMode, resourceCache);
            _finder       = new CompositeResourceFinder(resourceCache);
            _finder.Exclude(new ConsolidatedResourceExcluder(_scriptGroups));
            _finder.Exclude(new ConsolidatedResourceExcluder(_styleGroups));
            _finder.Exclude(new PreCompiledResourceExcluder());
            _finder.Exclude(new VsDocResourceExcluder());
            _filterPipelineMap = new ContentFilterPipelineMap();
            _assemblies        = new List <Assembly>();
            _dependencyManager = DependencyManagerFactory.GetDependencyManager(_finder, _scriptGroups, _styleGroups);
            _resourceMode      = resourceMode;
        }
예제 #12
0
        internal AssmanContext(ResourceMode resourceMode)
        {
            var resourceCache = ResourceCacheFactory.GetCache(resourceMode);

            _scriptGroups = ResourceGroupManager.GetInstance(resourceMode, resourceCache);
            _styleGroups = ResourceGroupManager.GetInstance(resourceMode, resourceCache);
            _compositeFinder = new CompositeResourceFinder();
            _compositeFinder.Exclude(new ConsolidatedResourceExcluder(_scriptGroups));
            _compositeFinder.Exclude(new ConsolidatedResourceExcluder(_styleGroups));
            _compositeFinder.Exclude(new PreCompiledResourceExcluder());
            _compositeFinder.Exclude(new VsDocResourceExcluder());
            _finder = new ResourceModeFilteringFinder(resourceMode, new CachingResourceFinder(resourceCache, _compositeFinder));
            _filterPipelineMap = new ContentFilterPipelineMap();
            _assemblies = new List<Assembly>();
            _dependencyManager = DependencyManagerFactory.GetDependencyManager(_finder, _scriptGroups, _styleGroups, resourceMode);
            _resourceMode = resourceMode;
            _scriptPathResolver = new ResourcePathResolver(_scriptGroups, _dependencyManager, _finder);
            _stylePathResolver = new ResourcePathResolver(_styleGroups, _dependencyManager, _finder);
        }
예제 #13
0
        private IEnumerable <PreCompiledResourceDependencies> GetDependenciesForConsolidatedUrls(
            IResourceGroupManager groupManager, IEnumerable <IResource> allResources)
        {
            var preConsolidatedDependencies = new List <PreCompiledResourceDependencies>();

            groupManager.EachGroup(allResources, @group =>
            {
                var dependencies = _dependencyManager.GetDependencies(@group.ConsolidatedUrl);
                if (dependencies.Any())
                {
                    preConsolidatedDependencies.Add(new PreCompiledResourceDependencies
                    {
                        ResourcePath = @group.ConsolidatedUrl,
                        Dependencies = dependencies.ToList()
                    });
                }
            });

            return(preConsolidatedDependencies);
        }
예제 #14
0
        private IEnumerable <string> GlobalDependenciesFor(string path)
        {
            var resourceType = ResourceType.FromPath(path);
            IResourceGroupManager groupManager = null;

            if (resourceType == ResourceType.Script)
            {
                groupManager = _scriptGroups;
            }
            else if (resourceType == ResourceType.Stylesheet)
            {
                groupManager = _styleGroups;
            }

            if (groupManager != null)
            {
                var allGlobalDependencies = groupManager.GetGlobalDependencies();
                return(allGlobalDependencies.TakeWhile(p => !p.Equals(path, Comparisons.VirtualPath)));
            }

            return(Enumerable.Empty <string>());
        }
예제 #15
0
        private IEnumerable <string> GetResourceUrls(IResourceGroupManager groupManager, string resourceUrl)
        {
            IEnumerable <string> resolvedResourceUrls;

            if (groupManager.IsGroupUrlWithConsolidationDisabled(resourceUrl))
            {
                resolvedResourceUrls = groupManager.GetResourceUrlsInGroup(resourceUrl, _finder)
                                       .SortByDependencies(_dependencyManager);
            }
            else
            {
                resolvedResourceUrls = new[] { groupManager.ResolveResourceUrl(resourceUrl) };
            }

            if (!String.IsNullOrEmpty(Version))
            {
                return(resolvedResourceUrls.Select(u => u.AddQueryParam("v", Version)));
            }
            else
            {
                return(resolvedResourceUrls);
            }
        }
예제 #16
0
 public void LoadPreCompilationReport(PreCompilationReport preCompilationReport)
 {
     _scriptGroups = new PreCompiledGroupManager(preCompilationReport.Scripts, _scriptGroups);
     _styleGroups = new PreCompiledGroupManager(preCompilationReport.Stylesheets, _styleGroups);
     _dependencyManager.SetCache(new PreCompiledDependencyCache(preCompilationReport.Dependencies));
     _scriptPathResolver = new ResourcePathResolver(_scriptGroups, _dependencyManager, _finder);
     _stylePathResolver = new ResourcePathResolver(_styleGroups, _dependencyManager, _finder);
     Version = preCompilationReport.Version;
     PreCompiled = true;
 }
예제 #17
0
 public ConsolidatedResourceExcluder(IResourceGroupManager groupManager)
 {
     _groupManager = groupManager;
 }
예제 #18
0
 public static DependencyManager GetDependencyManager(IResourceFinder finder, IResourceGroupManager scriptGroups, IResourceGroupManager styleGroups, ResourceMode resourceMode)
 {
     return new DependencyManager(finder, _dependencyCache, scriptGroups, styleGroups, resourceMode);
 }
예제 #19
0
 public PreCompiledGroupManager(PreCompiledResourceReport resourceReport, IResourceGroupManager inner)
 {
     _inner = inner;
     PopulateResourceUrlMap(resourceReport);
     Consolidate = true;
 }
예제 #20
0
        private IEnumerable<PreCompiledResourceDependencies> GetDependenciesForConsolidatedUrls(
            IResourceGroupManager groupManager, IEnumerable<IResource> allResources)
        {
            var preConsolidatedDependencies = new List<PreCompiledResourceDependencies>();

            groupManager.EachGroup(allResources, @group =>
            {
                var dependencies = _dependencyManager.GetDependencies(@group.ConsolidatedUrl);
                if (dependencies.Any())
                {
                    preConsolidatedDependencies.Add(new PreCompiledResourceDependencies
                    {
                        ResourcePath = @group.ConsolidatedUrl,
                        Dependencies = dependencies.ToList()
                    });
                }
            });

            return preConsolidatedDependencies;
        }
예제 #21
0
        private bool IsConsolidatedUrl(string virtualPath, IResourceGroupManager groupTemplates, out IEnumerable<IResource> resourcesInGroup)
        {
            var group = groupTemplates.GetGroupOrDefault(virtualPath, _resourceFinder);

            if (group == null)
            {
                resourcesInGroup = null;
                return false;
            }

            resourcesInGroup = group.GetResources().SortByDependencies(this);
            return true;
        }
예제 #22
0
 public CachingResourceGroupManager(IResourceGroupManager inner, IResourceCache resourceCache)
 {
     _inner         = inner;
     _resourceCache = resourceCache;
 }
예제 #23
0
 public ConsolidatedResourceExcluder(IResourceGroupManager groupManager)
 {
     _groupManager = groupManager;
 }
예제 #24
0
 public ResourcePathResolver(IResourceGroupManager groupManager, DependencyManager dependencyManager, IResourceFinder finder)
 {
     _groupManager      = groupManager;
     _dependencyManager = dependencyManager;
     _finder            = finder;
 }
예제 #25
0
 public ResourcePathResolver(IResourceGroupManager groupManager, DependencyManager dependencyManager, IResourceFinder finder)
 {
     _groupManager = groupManager;
     _dependencyManager = dependencyManager;
     _finder = finder;
 }
예제 #26
0
        private IEnumerable<PreCompiledResourceGroup> ConsolidateGroupsInternal(ResourceType resourceType,
            IResourceGroupManager groupTemplates,
            Action<ICompiledResource> onCompiled)
        {
            if (!groupTemplates.Any())
                return Enumerable.Empty<PreCompiledResourceGroup>();

            var allResources = _finder.FindResources(resourceType).ToArray();

            var preConsolidatedGroups = new List<PreCompiledResourceGroup>();
            groupTemplates.EachGroup(allResources, group =>
            {
                var consolidatedResource = CompileGroup(group);
                onCompiled(consolidatedResource);
                var preConsolidatedGroup = new PreCompiledResourceGroup
                {
                    ConsolidatedUrl = group.ConsolidatedUrl,
                    Resources = consolidatedResource.Resources.Select(resource => resource.VirtualPath).ToList()
                };
                preConsolidatedGroups.Add(preConsolidatedGroup);
            });

            return preConsolidatedGroups;
        }
예제 #27
0
 public static DependencyManager GetDependencyManager(IResourceFinder finder, IResourceGroupManager scriptGroups, IResourceGroupManager styleGroups, ResourceMode resourceMode)
 {
     return(new DependencyManager(finder, _dependencyCache, scriptGroups, styleGroups, resourceMode));
 }
예제 #28
0
 public CachingResourceGroupManager(IResourceGroupManager inner, IResourceCache resourceCache)
 {
     _inner = inner;
     _resourceCache = resourceCache;
 }