private void FeedStyleBlock(string media, string block) { if (string.IsNullOrEmpty(media)) { media = "all"; } int num = block.IndexOf("{"); string str = block.Substring(num).Replace("{", string.Empty).Replace("}", string.Empty); if (num < 0) { return; } string[] strArrays = block.Substring(0, num).Split(new char[] { ',' }); for (int i = 0; i < (int)strArrays.Length; i++) { string str1 = strArrays[i].Trim(); if (!string.IsNullOrEmpty(str1)) { CssBlock cssBlock = new CssBlock(str); if (!this.MediaBlocks.ContainsKey(media)) { this.MediaBlocks.Add(media, new Dictionary <string, CssBlock>()); } if (this.MediaBlocks[media].ContainsKey(str1)) { CssBlock item = this.MediaBlocks[media][str1]; foreach (string key in cssBlock.Properties.Keys) { if (!item.Properties.ContainsKey(key)) { item.Properties.Add(key, cssBlock.Properties[key]); } else { item.Properties[key] = cssBlock.Properties[key]; } } item.UpdatePropertyValues(); } else { this.MediaBlocks[media].Add(str1, cssBlock); } } } }
/// <summary> /// Feeds the style with a block about the specific media. /// When no media is specified, "all" will be used /// </summary> /// <param name="media"></param> /// <param name="block"></param> private void FeedStyleBlock(string media, string block) { if (string.IsNullOrEmpty(media)) { media = "all"; } int bracketIndex = block.IndexOf("{"); string blockSource = block.Substring(bracketIndex).Replace("{", string.Empty).Replace("}", string.Empty); if (bracketIndex < 0) { return; } ///TODO: Only supporting definitions like: /// h1, h2, h3 {... ///Support needed for definitions like: ///* {... ///h1 h2 {... ///h1 > h2 {... ///h1:before {... ///h1:hover {... string[] classes = block.Substring(0, bracketIndex).Split(','); for (int i = 0; i < classes.Length; i++) { string className = classes[i].Trim(); if (string.IsNullOrEmpty(className)) { continue; } CssBlock newblock = new CssBlock(blockSource); //Create media blocks if necessary if (!MediaBlocks.ContainsKey(media)) { MediaBlocks.Add(media, new Dictionary <string, CssBlock>()); } if (!MediaBlocks[media].ContainsKey(className)) { //Create block MediaBlocks[media].Add(className, newblock); } else { //Merge newblock and oldblock's properties CssBlock oldblock = MediaBlocks[media][className]; foreach (string property in newblock.Properties.Keys) { if (oldblock.Properties.ContainsKey(property)) { oldblock.Properties[property] = newblock.Properties[property]; } else { oldblock.Properties.Add(property, newblock.Properties[property]); } } oldblock.UpdatePropertyValues(); } } }