public void ParsedOpeningTag(Tag tag) { string id = tag.Attribute("id"); if (id != null) tag.Attributes["id"] = ob.ObfuscateID(id); string classes = tag.Attribute("class"); if (classes != null) { var cs = classes.Split(' '); for (int n = 0; n < cs.Length; n++) cs[n] = ob.ObfuscateClass(cs[n]); tag.Attributes["class"] = string.Join(" ", cs); } output.ParsedOpeningTag(tag); }
public void ParsedOpeningTag(Tag tag) { //Get them before they get obfuscated string id = tag.Attribute("id"); string cs = tag.Attribute("class"); //Ofuscation being done here output.ParsedOpeningTag(tag); string[] classes = cs == null ? new string[0] : cs.Split(' '); if (id == null && classes.Length == 0) return; var s = new StackItem(tag); foreach (var data in stack[stack.Count - 1].Selectors) { //Extract local ID if (id != null) s.Selectors.Add(data.CreateID(id, tag.Name)); //Extract local classes foreach (string c in classes) { if (c == "") continue; s.Selectors.Add(data.CreateClass(c, tag.Name)); } } if (tag.SelfClosed) return; //Add to stack if(s.Selectors.Count > 0) stack.Add(s); }
/// <summary> /// Possibly selfclosed /// </summary> public void ParsedOpeningTag(Tag tag) { string name = tag.Name; switch (name) { case "hr": case "br": case "img": case "?xml": case "!doctype": tag.SelfClosed = true; break; } if (hidden != null) return; if (HtmlCleaner.HiddenTags.Contains(name)) return; else if (HtmlCleaner.HiddenTagsChildren.Contains(name)) { hidden = tag; return; } if (blockTags.Contains(tag.Name) && tag.SelfClosed) writer.WriteLine(); if (tag.Name == "a") { string src = tag.Attribute("src"); if (src != null) writer.Write(" " + src + " "); } if (tag.Name == "img") { string url = tag.Attribute("src"); string alt = tag.Attribute("alt"); if (url == null) return; writer.Write("[" + alt + ": " + url + "]"); return; } }