/// <summary> /// Actualizes a vendor prefixes in CSS assets by using Andrey Sitnik's Autoprefixer /// </summary> /// <param name="assets">Set of CSS assets</param> /// <returns>Set of processed CSS assets</returns> public override IList <IAsset> PostProcess(IList <IAsset> assets) { if (assets == null) { throw new ArgumentNullException( nameof(assets), string.Format(CoreStrings.Common_ArgumentIsNull, nameof(assets)) ); } if (assets.Count == 0) { return(assets); } var assetsToProcessing = assets.Where(a => a.IsStylesheet).ToList(); if (assetsToProcessing.Count == 0) { return(assets); } AutoprefixingOptions options = CreateAutoprefixingOptions(); using (var cssAutoprefixer = new CssAutoprefixer(_createJsEngineInstance, _virtualFileSystemWrapper, options)) { foreach (var asset in assetsToProcessing) { InnerPostProcess(asset, cssAutoprefixer); } } return(assets); }
private void InnerPostProcess(IAsset asset, CssAutoprefixer cssAutoprefixer) { string newContent; string assetUrl = asset.Url; IList <string> dependencies; try { AutoprefixingResult result = cssAutoprefixer.Process(asset.Content, asset.Url); newContent = result.ProcessedContent; dependencies = result.IncludedFilePaths; } catch (CssAutoprefixingException e) { throw new AssetPostProcessingException( string.Format(CoreStrings.PostProcessors_PostprocessingSyntaxError, CODE_TYPE, assetUrl, POSTPROCESSOR_NAME, e.Message)); } catch (Exception e) { throw new AssetPostProcessingException( string.Format(CoreStrings.PostProcessors_PostprocessingFailed, CODE_TYPE, assetUrl, POSTPROCESSOR_NAME, e.Message), e); } asset.Content = newContent; asset.VirtualPathDependencies = asset.VirtualPathDependencies.Union(dependencies).ToList(); }
/// <summary> /// Actualizes a vendor prefixes in CSS asset by using Andrey Sitnik's Autoprefixer /// </summary> /// <param name="asset">CSS asset</param> /// <returns>Processed CSS asset</returns> public override IAsset PostProcess(IAsset asset) { if (asset == null) { throw new ArgumentException(CoreStrings.Common_ValueIsEmpty, "asset"); } AutoprefixingOptions options = CreateAutoprefixingOptions(); using (var cssAutoprefixer = new CssAutoprefixer(_createJsEngineInstance, _virtualFileSystemWrapper, options)) { InnerPostProcess(asset, cssAutoprefixer); } return(asset); }
/// <summary> /// Actualizes a vendor prefixes in CSS asset by using Andrey Sitnik's Autoprefixer /// </summary> /// <param name="asset">CSS asset</param> /// <returns>Processed CSS asset</returns> public override IAsset PostProcess(IAsset asset) { if (asset == null) { throw new ArgumentNullException( nameof(asset), string.Format(CoreStrings.Common_ArgumentIsNull, nameof(asset)) ); } AutoprefixingOptions options = CreateAutoprefixingOptions(); using (var cssAutoprefixer = new CssAutoprefixer(_createJsEngineInstance, _virtualFileSystemWrapper, options)) { InnerPostProcess(asset, cssAutoprefixer); } return(asset); }
private void InnerPostProcess(IAsset asset, CssAutoprefixer cssAutoprefixer) { string newContent; string assetUrl = asset.Url; try { newContent = cssAutoprefixer.Process(asset.Content, asset.Url); } catch (CssAutoprefixingException e) { throw new AssetPostProcessingException( string.Format(CoreStrings.PostProcessors_PostprocessingSyntaxError, CODE_TYPE, assetUrl, POSTPROCESSOR_NAME, e.Message)); } catch (Exception e) { throw new AssetPostProcessingException( string.Format(CoreStrings.PostProcessors_PostprocessingFailed, CODE_TYPE, assetUrl, POSTPROCESSOR_NAME, e.Message), e); } asset.Content = newContent; }
/// <summary> /// Actualizes a vendor prefixes in CSS-assets by using Andrey Sitnik's Autoprefixer /// </summary> /// <param name="assets">Set of CSS-assets</param> /// <returns>Set of processed CSS-assets</returns> public override IList<IAsset> PostProcess(IList<IAsset> assets) { if (assets == null) { throw new ArgumentException(CoreStrings.Common_ValueIsEmpty, "assets"); } if (assets.Count == 0) { return assets; } var assetsToProcessing = assets.Where(a => a.IsStylesheet).ToList(); if (assetsToProcessing.Count == 0) { return assets; } AutoprefixingOptions options = CreateAutoprefixingOptions(); using (var cssAutoprefixer = new CssAutoprefixer(_createJsEngineInstance, options)) { foreach (var asset in assetsToProcessing) { InnerPostProcess(asset, cssAutoprefixer); } } return assets; }
/// <summary> /// Actualizes a vendor prefixes in CSS-asset by using Andrey Sitnik's Autoprefixer /// </summary> /// <param name="asset">CSS-asset</param> /// <returns>Processed CSS-asset</returns> public override IAsset PostProcess(IAsset asset) { if (asset == null) { throw new ArgumentException(CoreStrings.Common_ValueIsEmpty, "asset"); } AutoprefixingOptions options = CreateAutoprefixingOptions(); using (var cssAutoprefixer = new CssAutoprefixer(_createJsEngineInstance, options)) { InnerPostProcess(asset, cssAutoprefixer); } return asset; }