/// <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); }
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); }