diff options
| author | Ignacio Etcheverry | 2017-10-02 23:24:00 +0200 |
|---|---|---|
| committer | Ignacio Etcheverry | 2017-10-03 00:01:26 +0200 |
| commit | e36fb95c50ce0cd0ab9621afe668332895712c2e (patch) | |
| tree | 5f146ad19fa9364c66fae002b0210a6a967b5e6e /modules/mono/editor/GodotSharpTools/StringExtensions.cs | |
| parent | 29b44801b2e9693c5d19d3e4fbb708af367c4904 (diff) | |
| download | godot-e36fb95c50ce0cd0ab9621afe668332895712c2e.tar.gz godot-e36fb95c50ce0cd0ab9621afe668332895712c2e.tar.zst godot-e36fb95c50ce0cd0ab9621afe668332895712c2e.zip | |
Added mono module
Diffstat (limited to 'modules/mono/editor/GodotSharpTools/StringExtensions.cs')
| -rw-r--r-- | modules/mono/editor/GodotSharpTools/StringExtensions.cs | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/modules/mono/editor/GodotSharpTools/StringExtensions.cs b/modules/mono/editor/GodotSharpTools/StringExtensions.cs new file mode 100644 index 000000000..b66c86f8c --- /dev/null +++ b/modules/mono/editor/GodotSharpTools/StringExtensions.cs @@ -0,0 +1,52 @@ +using System; +using System.IO; + +namespace GodotSharpTools +{ + public static class StringExtensions + { + public static string RelativeToPath(this string path, string dir) + { + // Make sure the directory ends with a path separator + dir = Path.Combine(dir, " ").TrimEnd(); + + if (Path.DirectorySeparatorChar == '\\') + dir = dir.Replace("/", "\\") + "\\"; + + Uri fullPath = new Uri(Path.GetFullPath(path), UriKind.Absolute); + Uri relRoot = new Uri(Path.GetFullPath(dir), UriKind.Absolute); + + return relRoot.MakeRelativeUri(fullPath).ToString(); + } + + public static string NormalizePath(this string path) + { + bool rooted = path.IsAbsolutePath(); + + path = path.Replace('\\', '/'); + + string[] parts = path.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries); + + path = string.Join(Path.DirectorySeparatorChar.ToString(), parts).Trim(); + + return rooted ? Path.DirectorySeparatorChar.ToString() + path : path; + } + + private static readonly string driveRoot = Path.GetPathRoot(Environment.CurrentDirectory); + + public static bool IsAbsolutePath(this string path) + { + return path.StartsWith("/") || path.StartsWith("\\") || path.StartsWith(driveRoot); + } + + public static string CsvEscape(this string value, char delimiter = ',') + { + bool hasSpecialChar = value.IndexOfAny(new char[] { '\"', '\n', '\r', delimiter }) != -1; + + if (hasSpecialChar) + return "\"" + value.Replace("\"", "\"\"") + "\""; + + return value; + } + } +} |
