/// <summary> /// /// </summary> /// <param name="contentType"></param> /// <param name="assetGroup"></param> /// <returns></returns> 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); }
/// <summary> /// /// </summary> /// <param name="dictionary"></param> /// <param name="type"></param> /// <param name="serializer"></param> /// <returns></returns> public override object Deserialize(IDictionary <string, object> dictionary, Type type, JavaScriptSerializer serializer) { MergedAssetDirectory mergedAssetDirectory = new MergedAssetDirectory { Path = serializer.ConvertToType <string>(dictionary["p"]) }; mergedAssetDirectory.Files.AddRange(serializer.ConvertToType <IList <MergedAssetFile> >(dictionary["f"])); return(mergedAssetDirectory); }
/// <summary> /// /// </summary> /// <param name="obj"></param> /// <param name="serializer"></param> /// <returns></returns> public override IDictionary <string, object> Serialize(object obj, JavaScriptSerializer serializer) { MergedAssetDirectory mergedAssetDirectory = (MergedAssetDirectory)obj; IDictionary <string, object> dictionary = new Dictionary <string, object> { { "p", mergedAssetDirectory.Path }, { "f", mergedAssetDirectory.Files } }; return(dictionary); }
public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer) { MergedAssetDirectory mergedAssetDirectory = new MergedAssetDirectory { Path = serializer.ConvertToType<string>(dictionary["p"]) }; mergedAssetDirectory.Files.AddRange(serializer.ConvertToType<IList<MergedAssetFile>>(dictionary["f"])); return mergedAssetDirectory; }