private void InnerMinify(IAsset asset, JsUglifier jsUglifier)
        {
            string content = asset.Content;
            string newContent;
            string assetUrl = asset.Url;

            try
            {
                newContent = jsUglifier.Uglify(content, assetUrl);
            }
            catch (JsUglificationException e)
            {
                throw new AssetMinificationException(
                          string.Format(CoreStrings.Minifiers_MinificationSyntaxError,
                                        CODE_TYPE, assetUrl, MINIFIER_NAME, e.Message));
            }
            catch (Exception e)
            {
                throw new AssetMinificationException(
                          string.Format(CoreStrings.Minifiers_MinificationFailed,
                                        CODE_TYPE, assetUrl, MINIFIER_NAME, e.Message));
            }

            asset.Content  = newContent;
            asset.Minified = true;
        }
        /// <summary>
        /// Produces a code minifiction of JS assets by using Uglify JS minifier
        /// </summary>
        /// <param name="assets">Set of JS assets</param>
        /// <returns>Set of JS assets with minified text content</returns>
        public IList <IAsset> Minify(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.IsScript && !a.Minified).ToList();

            if (assetsToProcessing.Count == 0)
            {
                return(assets);
            }

            UglificationOptions options = CreateUglificationOptions();

            using (var jsUglifier = new JsUglifier(_createJsEngineInstance, options))
            {
                foreach (var asset in assetsToProcessing)
                {
                    InnerMinify(asset, jsUglifier);
                }
            }

            return(assets);
        }
        /// <summary>
        /// Produces a code minifiction of JS asset by using Uglify JS minifier
        /// </summary>
        /// <param name="asset">JS asset</param>
        /// <returns>JS asset with minified text content</returns>
        public IAsset Minify(IAsset asset)
        {
            if (asset == null)
            {
                throw new ArgumentException(CoreStrings.Common_ValueIsEmpty, "asset");
            }

            if (asset.Minified)
            {
                return(asset);
            }

            UglificationOptions options = CreateUglificationOptions();

            using (var jsUglifier = new JsUglifier(_createJsEngineInstance, options))
            {
                InnerMinify(asset, jsUglifier);
            }

            return(asset);
        }
Esempio n. 4
0
        /// <summary>
        /// Produces a code minifiction of JS asset by using Uglify JS minifier
        /// </summary>
        /// <param name="asset">JS asset</param>
        /// <returns>JS asset with minified text content</returns>
        public IAsset Minify(IAsset asset)
        {
            if (asset == null)
            {
                throw new ArgumentNullException(
                          nameof(asset),
                          string.Format(CoreStrings.Common_ArgumentIsNull, nameof(asset))
                          );
            }

            if (asset.Minified)
            {
                return(asset);
            }

            UglificationOptions options = CreateUglificationOptions();

            using (var jsUglifier = new JsUglifier(_createJsEngineInstance, options))
            {
                InnerMinify(asset, jsUglifier);
            }

            return(asset);
        }
        private void InnerMinify(IAsset asset, JsUglifier jsUglifier)
        {
            string content = asset.Content;
            string newContent;
            string assetVirtualPath = asset.VirtualPath;

            try
            {
                newContent = jsUglifier.Uglify(content, assetVirtualPath);
            }
            catch (JsUglifyingException e)
            {
                throw new AssetMinificationException(
                    string.Format(CoreStrings.Minifiers_MinificationSyntaxError,
                        CODE_TYPE, assetVirtualPath, MINIFIER_NAME, e.Message));
            }
            catch (Exception e)
            {
                throw new AssetMinificationException(
                    string.Format(CoreStrings.Minifiers_MinificationFailed,
                        CODE_TYPE, assetVirtualPath, MINIFIER_NAME, e.Message));
            }

            asset.Content = newContent;
            asset.Minified = true;
        }
        /// <summary>
        /// Produces a code minifiction of JS-assets by using Uglify JS-minifier
        /// </summary>
        /// <param name="assets">Set of JS-assets</param>
        /// <returns>Set of JS-assets with minified text content</returns>
        public IList<IAsset> Minify(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.IsScript && !a.Minified).ToList();
            if (assetsToProcessing.Count == 0)
            {
                return assets;
            }

            UglificationOptions options = CreateUglificationOptions();

            using (var jsUglifier = new JsUglifier(_createJsEngineInstance, options))
            {
                foreach (var asset in assetsToProcessing)
                {
                    InnerMinify(asset, jsUglifier);
                }
            }

            return assets;
        }
        /// <summary>
        /// Produces a code minifiction of JS-asset by using Uglify JS-minifier
        /// </summary>
        /// <param name="asset">JS-asset</param>
        /// <returns>JS-asset with minified text content</returns>
        public IAsset Minify(IAsset asset)
        {
            if (asset == null)
            {
                throw new ArgumentException(CoreStrings.Common_ValueIsEmpty, "asset");
            }

            if (asset.Minified)
            {
                return asset;
            }

            UglificationOptions options = CreateUglificationOptions();

            using (var jsUglifier = new JsUglifier(_createJsEngineInstance, options))
            {
                InnerMinify(asset, jsUglifier);
            }

            return asset;
        }