/// <summary> /// Creates the document query node. /// </summary> /// <param name="documentTree">tree with document descendants</param> /// <returns>new instance of document query node</returns> private static DocumentQueryNode CreateDocumentQueryNode(CommonTree documentTree) { return(new DocumentQueryNode( string.Join(string.Empty, documentTree.GrandChildren(T(CssParser.DOCUMENT_MATCHNAME)).Select(_ => _.Text)), documentTree.Children(T(CssParser.DOCUMENT_SYMBOL)).FirstChildText(), documentTree.GrandChildren(T(CssParser.RULESETS)).Select(CreateRulesetNode).ToSafeReadOnlyCollection())); }
/// <summary>Creates the page node.</summary> /// <param name="pageTree">The list of page tree.</param> /// <returns>The list of page nodes.</returns> private static PageNode CreatePageNode(CommonTree pageTree) { if (pageTree == null) { return(null); } return(new PageNode( string.Join(string.Empty, pageTree.GrandChildren(T(CssParser.PSEUDO_PAGE)).Select(pseudo => pseudo.Text)), CreateDeclarationNodes(pageTree.GrandChildren(T(CssParser.DECLARATIONS))).ToSafeReadOnlyCollection())); }
/// <summary>Creates the media nodes.</summary> /// <param name="mediaTree">The list of media tree.</param> /// <returns>The list of media nodes.</returns> private static MediaNode CreateMediaNode(CommonTree mediaTree) { if (mediaTree == null) { return(null); } return(new MediaNode( mediaTree.GrandChildren(T(CssParser.MEDIA_QUERY_LIST)).Select(CreateMediaQueryNode).ToSafeReadOnlyCollection(), mediaTree.GrandChildren(T(CssParser.RULESETS)).Select(CreateRulesetNode).ToSafeReadOnlyCollection(), mediaTree.GrandChildren(T(CssParser.PAGE)).Select(CreatePageNode).ToSafeReadOnlyCollection())); }
/// <summary>Creates the ruleset nodes.</summary> /// <param name="rulesetTree">The list of rulesets.</param> /// <returns>The list of ruleset nodes.</returns> private static RulesetNode CreateRulesetNode(CommonTree rulesetTree) { if (rulesetTree == null) { return(null); } return(new RulesetNode( CreateSelectorsGroupNode(rulesetTree.GrandChildren(T(CssParser.SELECTORS_GROUP))), CreateDeclarationNodes(rulesetTree.GrandChildren(T(CssParser.DECLARATIONS))).ToSafeReadOnlyCollection(), CreateImportantCommentNodes(rulesetTree))); }
/// <summary>Creates the pseudo node.</summary> /// <param name="pseudoTree">The pseudo tree.</param> /// <returns>The pseudo node.</returns> private static PseudoNode CreatePseudoNode(CommonTree pseudoTree) { return(pseudoTree == null ? null : new PseudoNode( pseudoTree.GrandChildren(T(CssParser.COLONS)).Count(), pseudoTree.Children(T(CssParser.PSEUDONAME)).FirstChildText(), CreateFunctionalPseudoNode(pseudoTree.Children(T(CssParser.FUNCTIONAL_PSEUDO)).FirstOrDefault()))); }
/// <summary>Creates the simple selector.</summary> /// <param name="simpleSelectorSequenceTree">The simple selector.</param> /// <returns>The simple selector node.</returns> private static SimpleSelectorSequenceNode CreateSimpleSelectorSequenceNode(CommonTree simpleSelectorSequenceTree) { return(simpleSelectorSequenceTree == null ? null : new SimpleSelectorSequenceNode( CreateTypeSelectorNode(simpleSelectorSequenceTree.Children(T(CssParser.TYPE_SELECTOR)).FirstOrDefault()), CreateUniversalSelectorNode(simpleSelectorSequenceTree.Children(T(CssParser.UNIVERSAL)).FirstOrDefault()), GetWhitespaceCount(simpleSelectorSequenceTree) > 0 ? CssConstants.SingleSpace.ToString() : null, CreateHashClassAttribPseudoNegationNodes(simpleSelectorSequenceTree.GrandChildren(T(CssParser.HASHCLASSATNAMEATTRIBPSEUDONEGATIONNODES))).ToSafeReadOnlyCollection())); }
/// <summary>Creates the key frame node.</summary> /// <param name="styleSheetChild">The style sheet child.</param> /// <returns>The key frame node.</returns> private static KeyFramesNode CreateKeyFramesNode(CommonTree styleSheetChild) { return(new KeyFramesNode( styleSheetChild.Children(T(CssParser.KEYFRAMES_SYMBOL)).FirstChildText(), styleSheetChild.Children(T(CssParser.IDENTBASEDVALUE)).FirstChildText(), StringOrUriBasedValue(styleSheetChild.Children(T(CssParser.STRINGBASEDVALUE)).FirstChildText()), styleSheetChild.GrandChildren(T(CssParser.KEYFRAMES_BLOCKS)).Select(CreateKeyFramesBlockNode).ToSafeReadOnlyCollection())); }
/// <summary>Creates the media query node.</summary> /// <param name="mediaQueryTree">The media query tree.</param> /// <returns>The media query node.</returns> private static MediaQueryNode CreateMediaQueryNode(CommonTree mediaQueryTree) { return(new MediaQueryNode( mediaQueryTree.Children(T(CssParser.ONLY_TEXT)).FirstChildText(), mediaQueryTree.Children(T(CssParser.NOT_TEXT)).FirstChildText(), mediaQueryTree.Children(T(CssParser.MEDIA_TYPE)).FirstChildText(), mediaQueryTree.GrandChildren(T(CssParser.MEDIA_EXPRESSIONS)).Select(CreateMediaExpressionNode).ToSafeReadOnlyCollection())); }
/// <summary>Creates the expression node</summary> /// <param name="exprTree">The expression tree.</param> /// <returns>The expression node.</returns> private static ExprNode CreateExpressionNode(CommonTree exprTree) { if (exprTree == null) { return(null); } return(new ExprNode( CreateTermNode(exprTree.Children(T(CssParser.TERM)).FirstOrDefault()), CreateTermWithOperatorsNode(exprTree.GrandChildren(T(CssParser.TERMWITHOPERATORS))).ToSafeReadOnlyCollection(), CreateImportantCommentNodes(exprTree))); }
/// <summary>Creates the namespace nodes.</summary> /// <param name="styleSheetTree">The styleSheet tree.</param> /// <returns>The list of namespace nodes.</returns> private static ReadOnlyCollection <NamespaceNode> CreateNamespaceNodes(CommonTree styleSheetTree) { if (styleSheetTree == null) { return(Enumerable.Empty <NamespaceNode>().ToSafeReadOnlyCollection()); } return(styleSheetTree .GrandChildren(T(CssParser.NAMESPACES)) .Select(ns => { var value = StringOrUriBasedValue(ns.Children(T(CssParser.STRINGBASEDVALUE)).FirstChildText()); if (string.IsNullOrWhiteSpace(value)) { value = StringOrUriBasedValue(ns.Children(T(CssParser.URIBASEDVALUE)).FirstChildText()); } return new NamespaceNode(ns.Children(T(CssParser.NAMESPACE_PREFIX)).FirstChildText(), value); }).ToSafeReadOnlyCollection()); }
/// <summary>Gets the import nodes.</summary> /// <param name="styleSheetTree">The styleSheet common tree.</param> /// <returns>The import nodes.</returns> private static ReadOnlyCollection <ImportNode> CreateImportNodes(CommonTree styleSheetTree) { if (styleSheetTree == null) { return(Enumerable.Empty <ImportNode>().ToSafeReadOnlyCollection()); } return(styleSheetTree .GrandChildren(T(CssParser.IMPORTS)) .Select(import => { var importChild = import.Children().FirstOrDefault(); if (importChild != null) { var allowedImportData = AllowedImportData.None; string importValue = null; if (importChild.Text == T(CssParser.STRINGBASEDVALUE)) { allowedImportData = AllowedImportData.String; importValue = StringOrUriBasedValue(importChild.FirstChildText()); } else if (importChild.Text == T(CssParser.URIBASEDVALUE)) { allowedImportData = AllowedImportData.Uri; importValue = StringOrUriBasedValue(importChild.FirstChildText()); } return new ImportNode( allowedImportData, importValue, import.GrandChildren(T(CssParser.MEDIA_QUERY_LIST)).Select(CreateMediaQueryNode).ToSafeReadOnlyCollection()); } return null; }).ToSafeReadOnlyCollection()); }
/// <summary>Creates the key frames block node.</summary> /// <param name="keyFramesBlockTree">The key frames block tree.</param> /// <returns>The key frames block node.</returns> private static KeyFramesBlockNode CreateKeyFramesBlockNode(CommonTree keyFramesBlockTree) { return(new KeyFramesBlockNode( keyFramesBlockTree.GrandChildren(T(CssParser.KEYFRAMES_SELECTORS)).Select(keyFramesSelector => keyFramesSelector.FirstChildText()).ToSafeReadOnlyCollection(), CreateDeclarationNodes(keyFramesBlockTree.GrandChildren(T(CssParser.DECLARATIONS))).ToSafeReadOnlyCollection())); }