/// <summary>The <see cref="MediaQueryNode"/> visit implementation</summary> /// <param name="mediaQueryNode">The media expression node.</param> /// <returns>The modified AST node if modified otherwise the original node</returns> public override AstNode VisitMediaQueryNode(MediaQueryNode mediaQueryNode) { return(new MediaQueryNode( mediaQueryNode.OnlyText, mediaQueryNode.NotText, mediaQueryNode.MediaType, mediaQueryNode.MediaExpressions.Select(mediaExpressionNode => (MediaExpressionNode)mediaExpressionNode.Accept(this)).ToSafeReadOnlyCollection())); }
/// <summary>The <see cref="MediaQueryNode"/> visit implementation</summary> /// <param name="mediaQueryNode">The media expression node.</param> /// <returns>The modified AST node if modified otherwise the original node</returns> public override AstNode VisitMediaQueryNode(MediaQueryNode mediaQueryNode) { // media_query // : [ONLY | NOT]? S* media_type S* [ AND S* expression ]* // | expression [ AND S* expression ]* // ; // Per W3C Spec: // The following is an malformed media query because having no space between ‘and’ and // the expression is not allowed. (That is reserved for the functional notation syntax.) // @media all and(color) { … } if (!string.IsNullOrWhiteSpace(mediaQueryNode.OnlyText)) { _printerFormatter.Append(mediaQueryNode.OnlyText); _printerFormatter.Append(CssConstants.SingleSpace); } else if (!string.IsNullOrWhiteSpace(mediaQueryNode.NotText)) { _printerFormatter.Append(mediaQueryNode.NotText); _printerFormatter.Append(CssConstants.SingleSpace); } if (!string.IsNullOrWhiteSpace(mediaQueryNode.MediaType)) { _printerFormatter.Append(mediaQueryNode.MediaType); if (mediaQueryNode.MediaExpressions.Count > 0) { mediaQueryNode.MediaExpressions.ForEach(mediaExpression => { _printerFormatter.Append(CssConstants.SingleSpace); _printerFormatter.Append(CssConstants.And); _printerFormatter.Append(CssConstants.SingleSpace); mediaExpression.Accept(this); }); } } else { mediaQueryNode.MediaExpressions.ForEach((mediaExpression, last) => { mediaExpression.Accept(this); if (!last) { _printerFormatter.Append(CssConstants.SingleSpace); _printerFormatter.Append(CssConstants.And); _printerFormatter.Append(CssConstants.SingleSpace); } }); } return(mediaQueryNode); }
/// <summary>The <see cref="MediaQueryNode"/> visit implementation</summary> /// <param name="mediaQueryNode">The media expression node.</param> /// <returns>The modified AST node if modified otherwise the original node</returns> public virtual AstNode VisitMediaQueryNode(MediaQueryNode mediaQueryNode) { return(mediaQueryNode); }