private static MergedAsset CreateMergedAssetWith(string contentType, WebAssetItemGroup assetGroup)
{
Func<string, string> getDirectory = path => path.Substring(2, path.LastIndexOf("/", StringComparison.Ordinal) - 2);
Func<string, string> getFile = path => path.Substring(path.LastIndexOf("/", StringComparison.Ordinal) + 1);
MergedAsset asset = new MergedAsset
{
ContentType = contentType,
Version = assetGroup.Version,
Compress = assetGroup.Compress,
CacheDurationInDays = assetGroup.CacheDurationInDays
};
IEnumerable<string> directories = assetGroup.Items.Select(item => getDirectory(item.Source)).Distinct(StringComparer.OrdinalIgnoreCase);
directories.Each(directory => asset.Directories.Add(new MergedAssetDirectory { Path = directory }));
for (int i = 0; i < assetGroup.Items.Count; i++)
{
string item = assetGroup.Items[i].Source;
string directory = getDirectory(item);
string file = getFile(item);
MergedAssetDirectory assetDirectory = asset.Directories.Single(d => d.Path.IsCaseInsensitiveEqual(directory));
assetDirectory.Files.Add(new MergedAssetFile { Order = i, Name = file });
}
return asset;
}