升级XR插件版本
This commit is contained in:
73
Packages/MCPForUnity/Editor/Helpers/StringCaseUtility.cs
Normal file
73
Packages/MCPForUnity/Editor/Helpers/StringCaseUtility.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace MCPForUnity.Editor.Helpers
|
||||
{
|
||||
/// <summary>
|
||||
/// Utility class for converting between naming conventions (snake_case, camelCase).
|
||||
/// Consolidates previously duplicated implementations from ToolParams, ManageVFX,
|
||||
/// BatchExecute, CommandRegistry, and ToolDiscoveryService.
|
||||
/// </summary>
|
||||
public static class StringCaseUtility
|
||||
{
|
||||
/// <summary>
|
||||
/// Checks whether a type belongs to the built-in MCP for Unity package.
|
||||
/// Returns true when the type's namespace starts with
|
||||
/// <paramref name="builtInNamespacePrefix"/> or its assembly is MCPForUnity.Editor.
|
||||
/// </summary>
|
||||
public static bool IsBuiltInMcpType(Type type, string assemblyName, string builtInNamespacePrefix)
|
||||
{
|
||||
if (type != null && !string.IsNullOrEmpty(type.Namespace)
|
||||
&& type.Namespace.StartsWith(builtInNamespacePrefix, StringComparison.Ordinal))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(assemblyName)
|
||||
&& assemblyName.Equals("MCPForUnity.Editor", StringComparison.Ordinal))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts a camelCase string to snake_case.
|
||||
/// Example: "searchMethod" -> "search_method", "param1Value" -> "param1_value"
|
||||
/// </summary>
|
||||
/// <param name="str">The camelCase string to convert</param>
|
||||
/// <returns>The snake_case equivalent, or original string if null/empty</returns>
|
||||
public static string ToSnakeCase(string str)
|
||||
{
|
||||
if (string.IsNullOrEmpty(str))
|
||||
return str;
|
||||
|
||||
return Regex.Replace(str, "([a-z0-9])([A-Z])", "$1_$2").ToLowerInvariant();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts a snake_case string to camelCase.
|
||||
/// Example: "search_method" -> "searchMethod"
|
||||
/// </summary>
|
||||
/// <param name="str">The snake_case string to convert</param>
|
||||
/// <returns>The camelCase equivalent, or original string if null/empty or no underscores</returns>
|
||||
public static string ToCamelCase(string str)
|
||||
{
|
||||
if (string.IsNullOrEmpty(str) || !str.Contains("_"))
|
||||
return str;
|
||||
|
||||
var parts = str.Split('_');
|
||||
if (parts.Length == 0)
|
||||
return str;
|
||||
|
||||
// First part stays lowercase, rest get capitalized
|
||||
var first = parts[0];
|
||||
var rest = string.Concat(parts.Skip(1).Select(part =>
|
||||
string.IsNullOrEmpty(part) ? "" : char.ToUpperInvariant(part[0]) + part.Substring(1)));
|
||||
|
||||
return first + rest;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user