public static string Render(CSSDocument css, bool bCompress) { if (!bCompress) return css.ToString(); System.Text.StringBuilder sb = new System.Text.StringBuilder(); foreach (Directive dr in css.Directives) RenderDirective(sb, dr); foreach (RuleSet rules in css.RuleSets) RenderRuleSet(sb, rules); return sb.ToString(); }
public void Parse(string text, Node parentNode = null) { codeBrowser._tree.BeginUpdate(); if (parentNode == null) { ClearAll(); } ActiveWare.CSS.CSSParser parser = new ActiveWare.CSS.CSSParser(); parser.ParseText(text); cssDoc = parser.CSSDocument; if (cssDoc != null) { FillTree(cssDoc, parentNode); } //codeBrowser._tree.ExpandAll(); codeBrowser._tree.EndUpdate(); }
public static string Render(CSSDocument css) { StringBuilder txt = new StringBuilder(); txt.Append("<pre><span class=\"cssDoc\">"); foreach (Directive dr in css.Directives) { txt.AppendFormat("<span class=\"directive\">{0}</span>\r\n", Render(dr)); } if (txt.Length > 0) { txt.Append("\r\n"); } foreach (RuleSet rules in css.RuleSets) { txt.AppendFormat("<span class=\"ruleset\">{0}</span>\r\n", Render(rules, 0)); } txt.Append("</span></pre>"); return txt.ToString(); }
public void BuildCssTest_Has_Class_And_Nested_Element() { // Arrange var cssDocument = new CSSDocument(); var testInputItemsList = new List <TestInputItems>(); var testInputItems = new TestInputItems(); var listStyle = "Declaration: url('http://localhost')"; var className = "h1Class"; var elementName = "h1"; var name = new StringBuilder(); testInputItems.ClassName = name.Append(className) .Append(" ") .Append(elementName).ToString(); testInputItemsList.Add(testInputItems); testInputItems = new TestInputItems(); name = new StringBuilder(); testInputItems.ClassName = name.Append(className).Append(" ").Append(elementName).ToString(); testInputItemsList.Add(testInputItems); cssDocument.RuleSets = GetRuleSets(testInputItemsList); cssDocument.Directives = null; InitializeFakeConstructors(); // Act var result = _cssListBuilder.Invoke("BuildCssList", cssDocument) as CssItem; // Assert result.ShouldNotBeNull(); result.HasClass.ShouldBeTrue(); result.HasElement.ShouldBeFalse(); result.HasId.ShouldBeFalse(); result.ListClass[0].Name.ShouldBe(className); result.ListClass[0].ListClassStyle.ShouldBeNull(); result.ListClass[0].ListElement[0].ListElementStyle[0].Format.ShouldBe(listStyle); result.ListClass[0].ListElement[0].Name.ShouldBe(elementName); result.ListClass[0].ListElement[0].Parent.ShouldBeNull(); }
private void parseFromFileToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "CSS files|*.css"; if (ofd.ShowDialog() == DialogResult.OK) { var parser = new Parser(); css = new CSSDocument(); string raw_text = parser.getTextfromFile(ofd.FileName); css = parser.ParseText(raw_text); parsedCSSTreeView.Nodes.Clear(); FillTree(parsedCSSTreeView); if (parsedCSSTreeView.Nodes.Count != 0) { saveAsToolStripMenuItem.Enabled = true; Search_panel.Enabled = true; } } }
private void parseTextToolStripMenuItem_Click(object sender, EventArgs e) { if (ti == null) { ti = new TextInput(); } if (ti.ShowDialog() == DialogResult.OK) { var parser = new Parser(); css = new CSSDocument(); css = parser.ParseText(ti.RawText); parsedCSSTreeView.Nodes.Clear(); FillTree(parsedCSSTreeView); if (parsedCSSTreeView.Nodes.Count != 0) { saveAsToolStripMenuItem.Enabled = true; Search_panel.Enabled = true; } } }
public void AddFromCSS(CSSDocument doc, UriResolver urSource, UriResolver urTarget ) { foreach (RuleSet rs in doc.RuleSets) { foreach (Declaration decl in rs.Declarations) { foreach (Term t in decl.Expression.Terms) { if (t.Type != TermType.Url) continue; CssImageInfo cii = new CssImageInfo(); cii.Term = t; cii.SourceUriResolver = urSource; cii.TargetUriResolver = urTarget; _ciiElements.Add(cii); } } } }
public void BuildCssTest_Has_Elements_With_Pseudo_Then_Class() { // Arrange var cssDocument = new CSSDocument(); var testInputItemsList = new List <TestInputItems>(); var testInputItems = new TestInputItems(); var listStyle = "Declaration: url('http://localhost')"; var elementName = "li"; var pseudo = "hover"; var className = "links"; var syntax = new StringBuilder(); testInputItems.ElementName = syntax.Append(elementName).Append(":").Append(pseudo).Append(".").Append(className).ToString(); testInputItemsList.Add(testInputItems); cssDocument.RuleSets = GetRuleSets(testInputItemsList); cssDocument.Directives = null; InitializeFakeConstructors(); // Act var result = _cssListBuilder.Invoke("BuildCssList", cssDocument) as CssItem; // Assert result.ShouldNotBeNull(); result.HasClass.ShouldBeTrue(); result.HasElement.ShouldBeFalse(); result.HasId.ShouldBeFalse(); result.ListElement.Count.ShouldBe(0); result.ListId.Count.ShouldBe(0); result.ListClass[0].Name.ShouldBe(className); result.ListClass[0].ListClassStyle.ShouldBeNull(); result.ListClass[0].ListElement[0].Parent.ShouldBeNull(); result.ListClass[0].ListElement[0].Name.ShouldBe(elementName); result.ListClass[0].ListElement[0].ListElementStyle.ShouldBeNull(); result.ListClass[0].ListElement[0].ListPsuedo[0].Name.ShouldBe(pseudo); result.ListClass[0].ListElement[0].ListPsuedo[0].ListStyle[0].Format.ShouldBe(listStyle); }
public static string Render(CSSDocument css) { StringBuilder txt = new StringBuilder(); //foreach (Import imp in css.Imports) { // txt.AppendFormat("{0}\r\n", imp.ToString()); //} //foreach (Media mtg in css.Medias) { // txt.AppendFormat("@media{0} {{\r\n", mtg.Media != Media.None ? " " + mtg.Media.ToString() : ""); // foreach (Selector sel in mtg.Selectors) { // txt.Append(Render(sel, 1)); // txt.Append("\r\n"); // } // txt.Append("}\r\n"); //} //foreach (Selector sel in css.Selectors) { // txt.Append(Render(sel)); // txt.Append("\r\n"); //} txt.Append(css.ToString()); return txt.ToString(); }
public void BuildCssTest_Null_Input() { // Arrange var cssDocument = new CSSDocument(); cssDocument.RuleSets = null; cssDocument.Directives = null; InitializeFakeConstructors(); // Act var result = _cssListBuilder.Invoke("BuildCssList", cssDocument) as CssItem; // Assert result.ShouldNotBeNull(); result.HasClass.ShouldBeFalse(); result.HasElement.ShouldBeFalse(); result.HasId.ShouldBeFalse(); result.ListClass.Count.ShouldBe(0); result.ListElement.Count.ShouldBe(0); result.ListId.Count.ShouldBe(0); }
/// <summary> /// Contrustor taking a list of elements to be displayed /// </summary> /// <param name="webview">Webciew to send message</param> /// <param name="document">Optional css document to load for the program's default css</param> /// <param name="elements">Initial elements to add to the HTML body.</param> public ContentView(IWebView webview, CSSDocument document = null, params DisplayElement[] elements) : this(webview, document) { _htmlDocument = new HtmlDocument(); InitializeDisplay(elements); }
void CSS3() { CSSDoc = new CSSDocument(); string cset = null; RuleSet rset = null; Directive dir = null; while (la.kind == 4) { Get(); } while (la.kind == 5 || la.kind == 6) { if (la.kind == 5) { Get(); } else { Get(); } } while (StartOf(1)) { if (StartOf(2)) { ruleset(out rset); CSSDoc.RuleSets.Add(rset); } else { directive(out dir); CSSDoc.Directives.Add(dir); } while (la.kind == 5 || la.kind == 6) { if (la.kind == 5) { Get(); } else { Get(); } } while (la.kind == 4) { Get(); } } }
public static string Render(CSSDocument css) { StringBuilder txt = new StringBuilder(); txt.Append(css.ToString()); return txt.ToString(); }
public static string ToOutput(this CSSDocument doc) { return(doc.ToString()); }
public void NodeHasAncestors_Test() { // Arrange var document = new HtmlDocument(); document.DocumentNode.Name = "document"; var node = new HtmlNode(HtmlNodeType.Element, document, 1); node.Name = "ul"; var cssDocument = new CSSDocument(); var testInputItemsList = new List <TestInputItems>(); var testInputItems = new TestInputItems(); var className = "h1Class"; var elementName = "h1"; var name = new StringBuilder(); testInputItems.ClassName = name.Append(className) .Append(" ") .Append(elementName) .ToString(); testInputItems.PseudoName = "hover"; testInputItemsList.Add(testInputItems); cssDocument.RuleSets = GetRuleSets(testInputItemsList); cssDocument.Directives = null; // Option of GetDirectives(); var methodCaller = new PrivateObject(new CssConvert_2_0.Convert()); _parameters = new object[] { node, cssDocument }; // Act var result = methodCaller.Invoke("NodeHasAncestors", _parameters) as bool?; // Assert Assert.IsFalse(result); // Arrange node = new HtmlNode(HtmlNodeType.Element, document, 1) { Name = "ul" }; var node_ancestor = new HtmlNode(HtmlNodeType.Element, document, 1) { Name = "div" }; node_ancestor.AppendChild(node); _parameters = new object[] { node, cssDocument }; // Act result = methodCaller.Invoke("NodeHasAncestors", _parameters) as bool?; // Assert Assert.IsFalse(result); // Arrange node = new HtmlNode(HtmlNodeType.Element, document, 1); node.Name = "ul"; node_ancestor = new HtmlNode(HtmlNodeType.Element, document, 1) { Name = "div" }; node_ancestor.AppendChild(node); var ancestor = new HtmlNode(HtmlNodeType.Element, document, 1) { Name = "body" }; ancestor.AppendChild(node_ancestor); _parameters = new object[] { node, cssDocument }; // Act result = methodCaller.Invoke("NodeHasAncestors", _parameters) as bool?; // Assert Assert.IsFalse(result); }
private void FillTree(TreeView tv, CSSDocument css) { FillAtRules(tv, css.atrules); FillRuleSets(tv, css.rulesets); }
private string GetColorFromCss(string selector, Dictionary <string, string> selectorToColor, CSSDocument doc) { if (!selectorToColor.ContainsKey(selector)) { foreach (RuleSet ruleSet in doc.RuleSets) { foreach (Selector select in ruleSet.Selectors) { foreach (SimpleSelector sel in select.SimpleSelectors) { if (selector.Equals(sel.Class, StringComparison.Ordinal)) { var decl = (from d in ruleSet.Declarations where d.Name.Equals("color", StringComparison.OrdinalIgnoreCase) select d).FirstOrDefault(); if (decl != null) { string color = decl.Expression.ToString(); Color result = Color.FromName(color); if (result.A == 0) { // Color.FromName returns all 0 if it does not match return(color); } else { return(string.Format("#{0:x2}{1:x2}{2:x2}", result.R, result.G, result.B)); } } } } } } } else { return(selectorToColor[selector]); } return(null); }
private void ProcessSingleSelector(Selector selector, HtmlDocument htmlDocument, CSSDocument cssDocument, RuleSet ruleSet) { if (selector == null) { return; } var colonName = String.Empty; var selectorName = GetCleanedUpSelector(selector.ToString(), out colonName); var identifiedNodes = new List <HtmlNode>(); var idNodesIdentified = false; var regularNodesIdentified = false; var classNodesIdentified = IdentifyNodesMatchingSelector(selectorName, ClassSelectSyntax, ClassSelectorStart, htmlDocument, (node) => identifiedNodes.Add(node), true); if (!classNodesIdentified) { idNodesIdentified = IdentifyNodesMatchingSelector(selectorName, IdSelectSyntax, IdSelectorStart, htmlDocument, (node) => identifiedNodes.Add(node)); if (!idNodesIdentified) { regularNodesIdentified = true; var tempAllNodes = htmlDocument.DocumentNode.SelectNodes(String.Format(AllNodesSelectorSyntaxFormat, selectorName)); var tempClassNodes = htmlDocument.DocumentNode.SelectNodes(ClassSelectSyntax); var tempIdNodes = htmlDocument.DocumentNode.SelectNodes(IdSelectSyntax); if (tempAllNodes != null) { foreach (var node in tempAllNodes) { if ((tempClassNodes != null && tempClassNodes.Any(classNode => classNode == node)) || (tempIdNodes != null && tempIdNodes.Any(idNode => idNode == node))) { identifiedNodes.Add(node); } } } } } foreach (var node in identifiedNodes) { var hasAncestor = NodeHasAncestors(node, cssDocument); if (classNodesIdentified && !hasAncestor) { ProcessNode(node, ruleSet.Declarations, colonName); } if (idNodesIdentified && !hasAncestor) { ProcessNode(node, ruleSet.Declarations, colonName); } if (regularNodesIdentified && !hasAncestor && selectorName.Equals(node.Name, StringComparison.OrdinalIgnoreCase)) { ProcessNode(node, ruleSet.Declarations, colonName); } } }
private CSSDocument CreateCSS() { CSSDocument css = new CSSDocument(); css.AddElements( new CSSHTMLElement("body") .AddProperty(new CSSProperty("color", "#e3e3e3")) .AddProperty(new CSSProperty("background-color", "#383838")) .AddProperty(new CSSProperty("font-family", "Whitney, Helvetica, Neue, Arial, sans-serif")), new CSSHTMLElement("nav") .AddProperty(new CSSProperty("width", "12%")) .AddProperty(new CSSProperty("height", "100%")) .AddProperty(new CSSProperty("position", "fixed")) .AddProperty(new CSSProperty("z-index", "1")) .AddProperty(new CSSProperty("top", "0")) .AddProperty(new CSSProperty("left", "0")) .AddProperty(new CSSProperty("background-color", "#262626")) .AddProperty(new CSSProperty("padding-left", "5px")) .AddProperty(new CSSProperty("overflow-x", "hidden")), new CSSHTMLElement("nav a") .AddProperty(new CSSProperty("padding", "5px")) .AddProperty(new CSSProperty("line-height", "1.5")) .AddProperty(new CSSProperty("color", "#d8d8d8")) .AddProperty(new CSSProperty("text-decoration-line", "none")) .AddProperty(new CSSProperty("font-weight", "bold")), new CSSClassElement("content") .AddProperty(new CSSProperty("margin-left", "12.5%")), new CSSHTMLElement("table") .AddProperty(new CSSProperty("border-style", "solid solid solid solid")) .AddProperty(new CSSProperty("border-width", "1px 1px 1px 5px")) .AddProperty(new CSSProperty("border-color", "#282828 #282828 #282828 #cecefe")) .AddProperty(new CSSProperty("border-radius", "5px")) .AddProperty(new CSSProperty("border-spacing", "0px")) .AddProperty(new CSSProperty("background-color", "#343434")) .AddProperty(new CSSProperty("width", "100%")) .AddProperty(new CSSProperty("margin-bottom", "10px")) .AddProperty(new CSSProperty("table-layout", "fixed")) .AddProperty(new CSSProperty("word-wrap", "break-word")), new CSSHTMLElement("caption") .AddProperty(new CSSProperty("font-weight", "bold")) .AddProperty(new CSSProperty("font-size", "1.2em")), new CSSHTMLElement("th") .AddProperty(new CSSProperty("border-style", "none none solid none")) .AddProperty(new CSSProperty("background-color", "#323232")), new CSSHTMLElement("th, td") .AddProperty(new CSSProperty("border-color", "#282828")) .AddProperty(new CSSProperty("padding", "3px")), new CSSHTMLElement("th:nth-child(even), td:nth-child(even)") .AddProperty(new CSSProperty("background-color", "rgba(0,0,0,0.1)")), new CSSHTMLElement("th:first-child, td:first-child") .AddProperty(new CSSProperty("width", "15%")), new CSSHTMLElement("tr:not(:first-child) td") .AddProperty(new CSSProperty("border-style", "solid none none none")) .AddProperty(new CSSProperty("border-width", "1px")), new CSSHTMLElement("th:nth-child(2), td:nth-child(2)") .AddProperty(new CSSProperty("width", "15%")), new CSSHTMLElement("th:nth-child(5), td:nth-child(5)") .AddProperty(new CSSProperty("width", "12.5%")), new CSSClassElement("parameter") .AddProperty(new CSSProperty("font-size", "0.75em")) .AddProperty(new CSSProperty("font-family", "Lucida Console, Georgia")), new CSSClassElement("optional-parameter") .AddProperty(new CSSProperty("text-decoration", "underline #a4a4b2 dotted")), new CSSClassElement("default-value") .AddProperty(new CSSProperty("font-style", "italic")) ); return(css); }