internal static string GetDeminifiedMethodName()

in src/SourceMapToolkit.CallstackDeminifier/SourceMapExtensions.cs [13:60]


		internal static string GetDeminifiedMethodName(this SourceMap sourceMap, IReadOnlyList<BindingInformation> bindings)
		{
			if (sourceMap == null)
			{
				throw new ArgumentNullException(nameof(sourceMap));
			}

			string methodName = null;

			if (bindings != null && bindings.Count > 0)
			{
				MappingEntry? objectProtoypeMappingEntry = null;
				if (bindings.Count == 2)
				{
					objectProtoypeMappingEntry =
						sourceMap.GetMappingEntryForGeneratedSourcePosition(bindings[0].SourcePosition);
				}

				MappingEntry? mappingEntry =
					sourceMap.GetMappingEntryForGeneratedSourcePosition(bindings.Last().SourcePosition);

				if (mappingEntry?.OriginalName != null)
				{
					if (objectProtoypeMappingEntry?.OriginalName != null)
					{
						string objectName = objectProtoypeMappingEntry.Value.OriginalName;
						if (objectProtoypeMappingEntry.Value.OriginalSourcePosition.ZeroBasedColumnNumber == mappingEntry.Value.OriginalSourcePosition.ZeroBasedColumnNumber
							&& objectProtoypeMappingEntry.Value.OriginalSourcePosition.ZeroBasedLineNumber == mappingEntry.Value.OriginalSourcePosition.ZeroBasedLineNumber
							&& objectName.Length > mappingEntry.Value.OriginalName.Length
							&& objectName.EndsWith(mappingEntry.Value.OriginalName)
							&& (objectName[objectName.Length - 1 - mappingEntry.Value.OriginalName.Length] == '.'))
						{
							// The object name already contains the method name, so do not append it
							methodName = objectName;
						}
						else
						{
							methodName = $"{objectName}.{mappingEntry.Value.OriginalName}";
						}
					}
					else
					{
						methodName = mappingEntry.Value.OriginalName;
					}
				}
			}
			return methodName;
		}