예제 #1
0
 internal void AddMediaQuery(MediaQuery mediaQuery)
 {
     mediaQueries.Add(mediaQuery);
 }
예제 #2
0
        internal void ParseCSS(string style, List<CSSElement> elements, List<MediaQuery> mediaQuries)
        {
            MediaQuery mediaQuery = new MediaQuery();
            int eof = style.Length;
            int position = 0;

            while (position < eof)
            {
                string selectorText;

                int bracePosition = ParseSelector(position, style, out selectorText);
                int commentPosition;

                if (HasComment(position, bracePosition, eof, style, out commentPosition))
                {
                    position = commentPosition;
                    continue;
                }

                if (bracePosition > position && selectorText != string.Empty)
                {
                    List<HtmlStyle> htmlStyles;

                    if (!mediaQuery.Process(selectorText, style, mediaQuries, ref bracePosition))
                    {
                        //Returning close brace index
                        bracePosition = ParseHtmlStyles(bracePosition, style, out htmlStyles);

                        foreach (string selector in selectorText.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
                        {
                            elements.Add(new CSSElement(selector.Trim(), htmlStyles));
                        }
                    }
                }

                if (bracePosition == -1)
                {
                    break;
                }

                position = bracePosition;
            }
        }