Exemplo n.º 1
0
        /// <summary>
        /// Creates a new @page-rule from the given source.
        /// </summary>
        /// <param name="source">The token iterator.</param>
        /// <returns>The @page-rule.</returns>
        CSSPageRule CreatePageRule(IEnumerator <CssToken> source)
        {
            var page = new CSSPageRule();

            page.ParentStyleSheet = sheet;
            page.ParentRule       = CurrentRule;
            open.Push(page);
            var ctor = new CssSelectorConstructor();

            ctor.IgnoreErrors = ignore;

            do
            {
                if (source.Current.Type == CssTokenType.CurlyBracketOpen)
                {
                    if (SkipToNextNonWhitespace(source))
                    {
                        var tokens = LimitToCurrentBlock(source);
                        AppendDeclarations(tokens.GetEnumerator(), page.Style.List);
                        break;
                    }
                }

                ctor.PickSelector(source);
            }while (source.MoveNext());

            page.Selector = ctor.Result;
            open.Pop();
            return(page);
        }
Exemplo n.º 2
0
        public static CSSPageRule ConvertToCSSPageRule(AntlrModel.PageRule page)
        {
            var pageRule = new CSSPageRule();

            pageRule.selectorText = page.SerializeSelectorList();
            pageRule.cssText      = page.Serialize();
            var style = new CSSStyleDeclaration();

            style.cssText = page.PageBody.SerializeDeclaration();
            foreach (var decl in page.PageBody.AllDeclarations())
            {
                style.item.Add(ConvertToCSSDeclaration(decl));
            }
            pageRule.style = style;
            return(pageRule);
        }