Skip to content

Commit f96e9a5

Browse files
committed
In JavaScriptEngineSwitcher.Node was made a small refactoring
1 parent d3522eb commit f96e9a5

File tree

2 files changed

+50
-42
lines changed

2 files changed

+50
-42
lines changed

src/JavaScriptEngineSwitcher.Node/Helpers/NodeJsErrorHelpers.cs

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Collections.Generic;
1+
using System;
2+
using System.Collections.Generic;
23
using System.Diagnostics;
34
using System.Text.RegularExpressions;
45

@@ -16,6 +17,11 @@ internal static class NodeJsErrorHelpers
1617
{
1718
#region Error location
1819

20+
/// <summary>
21+
/// Name of file, which identifies the generated function call
22+
/// </summary>
23+
private const string GeneratedFunctionCallDocumentName = "JavaScriptEngineSwitcher.Node.Resources.generated-function-call.js";
24+
1925
/// <summary>
2026
/// Pattern for working with document names with coordinates
2127
/// </summary>
@@ -127,6 +133,48 @@ public static int GetColumnCountFromLine(string textLine)
127133
return columnCount;
128134
}
129135

136+
/// <summary>
137+
/// Filters a error location items
138+
/// </summary>
139+
/// <param name="errorLocationItems">An array of <see cref="ErrorLocationItem"/> instances</param>
140+
public static ErrorLocationItem[] FilterErrorLocationItems(ErrorLocationItem[] errorLocationItems)
141+
{
142+
int itemCount = errorLocationItems.Length;
143+
if (itemCount == 0)
144+
{
145+
return errorLocationItems;
146+
}
147+
148+
int itemIndex = 0;
149+
150+
while (itemIndex < itemCount)
151+
{
152+
ErrorLocationItem item = errorLocationItems[itemIndex];
153+
string documentName = item.DocumentName;
154+
string functionName = item.FunctionName;
155+
156+
if (documentName == "node:vm"
157+
|| documentName == "vm.js"
158+
|| documentName == GeneratedFunctionCallDocumentName
159+
|| (documentName == "anonymous" && functionName == "callFunction"))
160+
{
161+
break;
162+
}
163+
164+
itemIndex++;
165+
}
166+
167+
if (itemIndex == itemCount)
168+
{
169+
return errorLocationItems;
170+
}
171+
172+
var processedErrorLocationItems = new ErrorLocationItem[itemIndex];
173+
Array.Copy(errorLocationItems, processedErrorLocationItems, itemIndex);
174+
175+
return processedErrorLocationItems;
176+
}
177+
130178
#endregion
131179
}
132180
}

src/JavaScriptEngineSwitcher.Node/NodeJsEngine.cs

Lines changed: 1 addition & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,6 @@ public sealed class NodeJsEngine : JsEngineBase
3434
/// </summary>
3535
private const string ENGINE_HELPERS_RESOURCE_NAME = "JavaScriptEngineSwitcher.Node.Resources.engine-helpers.js";
3636

37-
/// <summary>
38-
/// Name of file, which identifies the generated function call
39-
/// </summary>
40-
private const string GENERATED_FUNCTION_CALL_FILE_NAME = "JavaScriptEngineSwitcher.Node.Resources.generated-function-call.js";
41-
4237
/// <summary>
4338
/// Name of JS engine
4439
/// </summary>
@@ -305,7 +300,7 @@ private WrapperException WrapInvocationException(InvocationException originalExc
305300
{
306301
string errorLocation = message.Substring(messageWithTypeLength);
307302
errorLocationItems = NodeJsErrorHelpers.ParseErrorLocation(errorLocation);
308-
errorLocationItems = FilterErrorLocationItems(errorLocationItems);
303+
errorLocationItems = NodeJsErrorHelpers.FilterErrorLocationItems(errorLocationItems);
309304

310305
if (errorLocationItems.Length > 0)
311306
{
@@ -350,41 +345,6 @@ private WrapperException WrapInvocationException(InvocationException originalExc
350345
return wrapperException;
351346
}
352347

353-
/// <summary>
354-
/// Filters a error location items
355-
/// </summary>
356-
/// <param name="errorLocationItems">An array of <see cref="ErrorLocationItem"/> instances</param>
357-
private static ErrorLocationItem[] FilterErrorLocationItems(ErrorLocationItem[] errorLocationItems)
358-
{
359-
if (errorLocationItems.Length == 0)
360-
{
361-
return errorLocationItems;
362-
}
363-
364-
int excessErrorLocationItemIndex = 0;
365-
366-
foreach (ErrorLocationItem item in errorLocationItems)
367-
{
368-
string documentName = item.DocumentName;
369-
string functionName = item.FunctionName;
370-
371-
if (documentName == "node:vm"
372-
|| documentName == "vm.js"
373-
|| documentName == GENERATED_FUNCTION_CALL_FILE_NAME
374-
|| (documentName == "anonymous" && functionName == "callFunction"))
375-
{
376-
break;
377-
}
378-
379-
excessErrorLocationItemIndex++;
380-
}
381-
382-
var processedErrorLocationItems = new ErrorLocationItem[excessErrorLocationItemIndex];
383-
Array.Copy(errorLocationItems, processedErrorLocationItems, excessErrorLocationItemIndex);
384-
385-
return processedErrorLocationItems;
386-
}
387-
388348
#endregion
389349

390350
#endregion

0 commit comments

Comments
 (0)