private string ProcessInlineScriptContent(MarkupParsingContext context, HtmlAttribute attribute)
{
string scriptContent = attribute.Value;
bool forHrefAttribute = attribute.NameInLowercase == "href";
string result = scriptContent;
if (_settings.MinifyInlineJsCode && _jsMinifier.IsInlineCodeMinificationSupported)
{
bool isJavascriptProtocolRemoved = false;
if (scriptContent.StartsWith(JS_PROTOCOL, StringComparison.OrdinalIgnoreCase))
{
result = _jsProtocolRegex.Replace(result, string.Empty);
isJavascriptProtocolRemoved = true;
}
CodeMinificationResult minificationResult = _jsMinifier.Minify(result, true);
if (minificationResult.Errors.Count == 0)
{
result = minificationResult.MinifiedContent ?? string.Empty;
}
if (minificationResult.Errors.Count > 0 || minificationResult.Warnings.Count > 0)
{
string sourceCode = context.SourceCode;
SourceCodeNodeCoordinates tagCoordinates = context.NodeCoordinates;
SourceCodeNodeCoordinates attributeCoordinates = attribute.ValueCoordinates;
foreach (MinificationErrorInfo error in minificationResult.Errors)
{
var relativeErrorCoordinates = new SourceCodeNodeCoordinates(error.LineNumber, error.ColumnNumber);
SourceCodeNodeCoordinates absoluteErrorCoordinates = CalculateAbsoluteInlineCodeErrorCoordinates(
tagCoordinates, attributeCoordinates, relativeErrorCoordinates);
string sourceFragment = SourceCodeNavigator.GetSourceFragment(
sourceCode, absoluteErrorCoordinates);
string message = error.Message.Trim();
WriteError(LogCategoryConstants.JsMinificationError, message, _fileContext,
absoluteErrorCoordinates.LineNumber, absoluteErrorCoordinates.ColumnNumber, sourceFragment);
}
foreach (MinificationErrorInfo warning in minificationResult.Warnings)
{
var relativeErrorCoordinates = new SourceCodeNodeCoordinates(warning.LineNumber, warning.ColumnNumber);
SourceCodeNodeCoordinates absoluteErrorCoordinates = CalculateAbsoluteInlineCodeErrorCoordinates(
tagCoordinates, attributeCoordinates, relativeErrorCoordinates);
string sourceFragment = SourceCodeNavigator.GetSourceFragment(
sourceCode, absoluteErrorCoordinates);
string message = warning.Message.Trim();
WriteWarning(LogCategoryConstants.JsMinificationWarning, message, _fileContext,
absoluteErrorCoordinates.LineNumber, absoluteErrorCoordinates.ColumnNumber, sourceFragment);
}
}
if (isJavascriptProtocolRemoved
&& (forHrefAttribute || !_settings.RemoveJsProtocolFromAttributes))
{
result = JS_PROTOCOL + result;
}
}
else
{
result = result.Trim();
if (!forHrefAttribute && _settings.RemoveJsProtocolFromAttributes)
{
result = _jsProtocolRegex.Replace(result, string.Empty);
}
}
result = Utils.RemoveEndingSemicolon(result);
return result;
}