예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        /// <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;
            }
        }