aboutsummaryrefslogtreecommitdiff
path: root/tools/Crupest.V2ray/Crupest.V2ray/FileUtility.cs
diff options
context:
space:
mode:
Diffstat (limited to 'tools/Crupest.V2ray/Crupest.V2ray/FileUtility.cs')
-rw-r--r--tools/Crupest.V2ray/Crupest.V2ray/FileUtility.cs94
1 files changed, 0 insertions, 94 deletions
diff --git a/tools/Crupest.V2ray/Crupest.V2ray/FileUtility.cs b/tools/Crupest.V2ray/Crupest.V2ray/FileUtility.cs
deleted file mode 100644
index 08de673..0000000
--- a/tools/Crupest.V2ray/Crupest.V2ray/FileUtility.cs
+++ /dev/null
@@ -1,94 +0,0 @@
-using System.Text.Json;
-using System.Text.RegularExpressions;
-
-namespace Crupest.V2ray;
-
-public static partial class FileUtility
-{
- public static List<string> ReadList(string str)
- {
- return str.Split("\n", StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries).ToList();
- }
-
- public static Dictionary<string, string> ReadDictionary(string str, bool keyToLower = true)
- {
- var lines = str.Split("\n", StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
- var result = new Dictionary<string, string>();
- for (int lineNumber = 0; lineNumber < lines.Length; lineNumber++)
- {
- var line = lines[lineNumber];
- if (!line.Contains('='))
- {
- throw new FormatException($"Line {lineNumber + 1} does not contain a '='.");
- }
- var equalIndex = line.IndexOf('=');
- var key = line[..equalIndex].Trim();
- if (keyToLower) key = key.ToLower();
- var value = line[(equalIndex + 1)..].Trim();
- result[key] = value;
- }
- return result;
- }
-
- public static List<string> ReadListFile(string path, bool required = true)
- {
- if (File.Exists(path))
- {
- return ReadList(File.ReadAllText(path));
- }
- else
- {
- if (required)
- {
- throw new FileNotFoundException($"File {path} is required but it does not exist.");
- }
- return new();
- }
- }
-
- public static Dictionary<string, string> ReadDictionaryFile(string path, bool required = true, bool keyToLower = true)
- {
- if (File.Exists(path))
- {
- return ReadDictionary(File.ReadAllText(path), keyToLower);
- }
- else
- {
- if (required)
- {
- throw new FileNotFoundException($"File {path} is required but it does not exist.");
- }
- return new();
- }
- }
-
- private static Regex TemplateValuePattern { get; } = CreateTemplateValuePattern();
-
- [GeneratedRegex(@"\$\{\s*([_a-zA-Z][_a-zA-Z0-9]*)\s*\}")]
- private static partial Regex CreateTemplateValuePattern();
-
- public static string TextFromTemplate(string template, Dictionary<string, string> dict)
- {
- return TemplateValuePattern.Replace(template, (match) =>
- {
- var key = match.Groups[1].Value;
- if (dict.ContainsKey(key))
- {
- return dict[key];
- }
- return match.Value;
- });
- }
-
- public static string JsonFormat(string json)
- {
- var options = new JsonSerializerOptions
- {
- WriteIndented = true,
- AllowTrailingCommas = true,
- ReadCommentHandling = JsonCommentHandling.Skip
- };
-
- return JsonSerializer.Serialize(JsonSerializer.Deserialize<JsonDocument>(json, options), options);
- }
-}