public css_selector(css_element_selector right) { _right = right; _media_query = null; _combinator = css_combinator.descendant; _order = 0; }
public bool parse(string text) { if (string.IsNullOrEmpty(text)) { return(false); } var tokens = new List <string>(); html.split_string(text, tokens, "", " \t>+~", "(["); if (tokens.Count == 0) { return(false); } var right = tokens[tokens.Count - 1].Trim(); var combinator = '\0'; tokens.RemoveAt(tokens.Count - 1); string lastToken; while (tokens.Count != 0 && ((lastToken = tokens[tokens.Count - 1]) == " " || lastToken == "\t" || lastToken == "+" || lastToken == "~" || lastToken == ">")) { if (combinator == ' ' || combinator == 0) { combinator = lastToken[0]; } tokens.RemoveAt(tokens.Count - 1); } var left = tokens.Aggregate(new StringBuilder(), (a, b) => a.Append(b)).ToString().Trim(); if (string.IsNullOrEmpty(right)) { return(false); } _right.parse(right); switch (combinator) { case '>': _combinator = css_combinator.child; break; case '+': _combinator = css_combinator.adjacent_sibling; break; case '~': _combinator = css_combinator.general_sibling; break; default: _combinator = css_combinator.descendant; break; } _left = null; if (!string.IsNullOrEmpty(left)) { _left = new css_selector((media_query_list)null); if (!_left.parse(left)) { return(false); } } return(true); }
public css_selector(css_selector val) { _right = val._right; _left = val._left; //: shared? _combinator = val._combinator; _specificity = val._specificity; _order = val._order; _media_query = val._media_query; }
public css_selector(media_query_list media = null) { _media_query = media; _combinator = css_combinator.descendant; _order = 0; }