Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Source/Rejuicer/Rejuicer/Engine/FileResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ static FileResolver()

public static IEnumerable<string> VirtualPathsFor(RejuicerConfigurationSource config)
{
return config == null ? Enumerable.Empty<string>() : config.GetDependencies(config.ResourceType).Select(f => VirtualPathResolver.GetVirtualPathFor(f));
return config == null ? Enumerable.Empty<string>() : config.GetFiles(config.ResourceType);
}

private class FileComparer : IEqualityComparer<FileInfo>
Expand Down
10 changes: 5 additions & 5 deletions Source/Rejuicer/Rejuicer/Engine/PhysicalFileRegister.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,16 @@ public static PhysicalFileSource For(string virtualPath)
return fileSourceRegister.ContainsKey(virtualPath) ? fileSourceRegister[virtualPath] : null;
}

public static PhysicalFileSource For(FileInfo file, ResourceType resourceType, Mode mode)
public static PhysicalFileSource For(string virtualPath, ResourceType resourceType, Mode mode)
{
var virtualPathFor = VirtualPathResolver.GetVirtualPathFor(file);
var file = new FileInfo(VirtualPathResolver.ResolveVirtualPath(virtualPath));

var physicalFileSource = For(virtualPathFor);
var physicalFileSource = For(virtualPath);

if (physicalFileSource == null)
{
physicalFileSource = new PhysicalFileSource(resourceType,
virtualPathFor,
physicalFileSource = new PhysicalFileSource(resourceType,
virtualPath,
file.FullName,
mode);

Expand Down
2 changes: 2 additions & 0 deletions Source/Rejuicer/Rejuicer/Model/IContentSource.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ public interface IContentSource
ResourceType ResourceType { get; }
IEnumerable<FileInfo> GetDependencies(ResourceType? resourceType);
IEnumerable<FileInfo> GetDependencies();
IEnumerable<string> GetFiles(ResourceType? resourceType);
IEnumerable<string> GetFiles();
OutputContent GetContent(ICacheProvider cacheProvider);
}
}
25 changes: 25 additions & 0 deletions Source/Rejuicer/Rejuicer/Model/PhysicalFileSource.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,31 @@ public IEnumerable<FileInfo> GetDependencies(ResourceType? resourceType)
}
}

public IEnumerable<string> GetFiles()
{
return GetFiles(null);
}

public IEnumerable<string> GetFiles(ResourceType? resourceType)
{
_lock.EnterReadLock();
try
{
var dependencies = _dependencies.SelectMany(x => x.GetFiles(resourceType));

if (!resourceType.HasValue || ResourceType == resourceType.Value)
{
dependencies = dependencies.Union(new[] { VirtualPath });
}

return dependencies;
}
finally
{
_lock.ExitReadLock();
}
}

public OutputContent GetContent(ICacheProvider cacheProvider)
{
return GetContent(cacheProvider, Mode);
Expand Down
18 changes: 18 additions & 0 deletions Source/Rejuicer/Rejuicer/Model/RejuicerConfigurationSource.cs
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,24 @@ public IEnumerable<FileInfo> GetDependencies(ResourceType? resourceType)
}
}

public IEnumerable<string> GetFiles()
{
return GetFiles(null);
}

public IEnumerable<string> GetFiles(ResourceType? resourceType)
{
_lock.EnterReadLock();
try
{
return this.SelectMany(x => x.GetFiles(resourceType)).Distinct();
}
finally
{
_lock.ExitReadLock();
}
}

public DateTime GetLastModifiedDate(ICacheProvider cacheProvider)
{
return GetContent(cacheProvider).LastModifiedDate;
Expand Down
2 changes: 1 addition & 1 deletion Source/Rejuicer/Rejuicer/Rules/SingleFileRule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public IOrderedEnumerable<IContentSource> Evaluate(ResourceType resourceType)
return Enumerable.Empty<IContentSource>().OrderBy(x => x);
}

return new IContentSource[] { PhysicalFileRegister.For(file, resourceType, Mode) }.OrderBy(x => x);
return new IContentSource[] { PhysicalFileRegister.For(VirtualPath, resourceType, Mode) }.OrderBy(x => x);
}
}
}
4 changes: 2 additions & 2 deletions Source/Rejuicer/Rejuicer/Rules/WildcardMatchFileRule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,10 @@ public IOrderedEnumerable<IContentSource> Evaluate(ResourceType resourceType)
if (physicalPath == null)
return Enumerable.Empty<IContentSource>().OrderBy(x => x);

return Directory.GetFiles(physicalPath.FullName, SearchPattern ?? "*", IsRecursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly)
return Directory.EnumerateFiles(physicalPath.FullName, SearchPattern ?? "*", IsRecursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly)
.Select(f => new FileInfo(f))
.Where(FileNotExcluded)
.Select(file => PhysicalFileRegister.For(file, resourceType, Mode))
.Select(file => PhysicalFileRegister.For(string.Format("{0}/{1}", FolderVirtualPath, file.Name), resourceType, Mode))
.OfType<IContentSource>()
.OrderBy(x => new FileInfo(((PhysicalFileSource)x).PhysicalPath).Name);
}
Expand Down