public IList<IAsset> Filter(IList<IAsset> Assets)
{
if (Assets == null || Assets.Count == 0)
return new List<IAsset>();
if (Assets.FirstOrDefault().Type != AssetType.CSS)
return Assets;
FileManager FileSystem = BatComputer.Bootstrapper.Resolve<FileManager>();
var TempAssets = new List<IAsset>();
foreach (IAsset Asset in Assets)
{
bool Done = false;
while (!Done)
{
Done = true;
foreach (Match Import in FileImportRegex.Matches(Asset.Content))
{
Done = false;
string TempFile = Import.Groups["File"].Value;
string MatchString = Import.Value;
IFile File = FileSystem.File(TempFile);
File = DetermineFile(File, FileSystem, Asset, TempFile);
if (File == null||!File.Exists)
{
IFile AssetFile = FileSystem.File(Asset.Path);
File = FileSystem.File(AssetFile.Directory.FullName + "\\" + TempFile);
}
IAsset SubAsset = Assets.FirstOrDefault(x => x.Path.ToUpperInvariant() == File.FullName.ToUpperInvariant());
if (SubAsset == null)
{
SubAsset = new Asset(File.FullName.Replace(FileSystem.Directory("~/").FullName, "~/").Replace("\\", "/"));
}
Asset.Included.Add(SubAsset);
Asset.Content = Asset.Content.Replace(MatchString, SubAsset.Content);
}
}
TempAssets.Add(Asset);
}
foreach (IAsset Asset in TempAssets)
{
foreach (IAsset IncludedAsset in Asset.Included)
{
Assets.Remove(IncludedAsset);
}
}
return Assets;
}