using System; using System.Collections.Generic; using System.Text; using Config.Net.Core; using Config.Net.TypeParsers; namespace Config.Net.Core { /// /// Helper class to implement flat arrays /// public static class FlatArrays { public static bool IsArrayLength(string? key, Func getValue, out int length) { if (!OptionPath.TryStripLength(key, out key)) { length = 0; return false; } string? value = key == null ? null : getValue(key); if (value == null) { length = 0; return false; } if (!StringArrayParser.TryParse(value, out string[]? ar)) { length = 0; return false; } length = ar?.Length ?? 0; return true; } public static bool IsArrayElement(string? key, Func getValue, out string? value) { if(!OptionPath.TryStripIndex(key, out key, out int index)) { value = null; return false; } string? arrayString = key == null ? null : getValue(key); if (!StringArrayParser.TryParse(arrayString, out string[]? array) || index >= array?.Length) { value = null; return false; } value = array?[index] ?? null; return true; } } }