/// <summary> /// Produces a code minifiction of JS content by using the YUI JS Compressor for .NET /// </summary> /// <param name="content">JS content</param> /// <param name="isInlineCode">Flag whether the content is inline code</param> /// <param name="encoding">Text encoding</param> /// <returns>Minified JS content</returns> public CodeMinificationResult Minify(string content, bool isInlineCode, Encoding encoding) { if (string.IsNullOrWhiteSpace(content)) { return(new CodeMinificationResult(string.Empty)); } string newContent = string.Empty; var errors = new List <MinificationErrorInfo>(); var warnings = new List <MinificationErrorInfo>(); lock (_minificationSynchronizer) { if (_errorReporter == null) { _errorReporter = new YuiJsErrorReporter(_settings.WarningLevel); } if (_originalJsMinifier == null) { _originalJsMinifier = CreateOriginalJsMinifierInstance(_settings); } _originalJsMinifier.ErrorReporter = _errorReporter; _originalJsMinifier.Encoding = encoding; try { newContent = _originalJsMinifier.Compress(content); } catch (EcmaScriptRuntimeException e) { errors.Add(new MinificationErrorInfo(e.Message, e.LineNumber, e.ColumnNumber, e.LineSource)); } catch (EcmaScriptException e) { errors.Add(new MinificationErrorInfo(e.Message, e.LineNumber, e.ColumnNumber, e.LineSource)); } finally { _originalJsMinifier.ErrorReporter = null; _originalJsMinifier.Encoding = TextEncodingShortcuts.Default; errors.AddRange(_errorReporter.Errors); warnings.AddRange(_errorReporter.Warnings); _errorReporter.Clear(); } } return(new CodeMinificationResult(newContent, errors, warnings)); }
/// <summary> /// Produces code minifiction of JS content by using /// YUI JS Compressor for .NET /// </summary> /// <param name="content">JS content</param> /// <param name="isInlineCode">Flag whether the content is inline code</param> /// <param name="encoding">Text encoding</param> /// <returns>Minified JS content</returns> public CodeMinificationResult Minify(string content, bool isInlineCode, Encoding encoding) { if (string.IsNullOrWhiteSpace(content)) { return(new CodeMinificationResult(string.Empty)); } var errors = new List <MinificationErrorInfo>(); var warnings = new List <MinificationErrorInfo>(); var errorReporter = new YuiJsErrorReporter(); var jsCompressor = CreateJavaScriptCompressorInstance(); jsCompressor.ErrorReporter = errorReporter; jsCompressor.Encoding = encoding; string newContent = string.Empty; try { newContent = jsCompressor.Compress(content); } catch (EcmaScriptRuntimeException e) { errors.Add(new MinificationErrorInfo(e.Message, e.LineNumber, e.ColumnNumber, e.LineSource)); } catch (EcmaScriptException e) { errors.Add(new MinificationErrorInfo(e.Message, e.LineNumber, e.ColumnNumber, e.LineSource)); } errors.AddRange(errorReporter.Errors); warnings.AddRange(errorReporter.Warnings); return(new CodeMinificationResult(newContent, errors, warnings)); }