/// <summary> /// Deserialize a configuration value into a <see cref="ConfigurationSectionList" /> for querying values by key. /// </summary> /// <param name="configuration">The configuration to parse.</param> /// <returns>Returns a configuration list of key-value pairs.</returns> public static ConfigurationSectionList Deserialize(string configuration) { if (configuration is null) { throw new ArgumentNullException(nameof(configuration)); } var reader = new StringReader(configuration); var config = new ConfigurationSectionList(); while (TryReadLine(reader, out string currentLine)) { if (CanSkip(currentLine)) { continue; } while (IsSectionLine(currentLine)) { var section = new ConfigurationSectionList(); currentLine = ReadSection(currentLine, reader, section); config.Add(new KeyValuePair <string, object>(section.Name, section)); } } return(config); }
private static void ReadValues(string currentLine, StringReader reader, ConfigurationSectionList section) { var split = currentLine.Split(Equal, 2); if (split.Length != 2) { return; } var config = new ConfigurationSectionList(); while (TryReadLine(reader, out currentLine)) { if (CanSkip(currentLine)) { continue; } if (currentLine[0] == GroupClose) { break; } ReadValue(currentLine, reader, config); } section.Add(new KeyValuePair <string, object>(split[0].Trim(), config)); }
/// <summary> /// Converts a <see cref="Krb5Config"/> instance into a <see cref="ConfigurationSectionList" /> for possible future serialization. /// </summary> /// <param name="config"></param> /// <returns></returns> public static ConfigurationSectionList FromConfigObject(Krb5Config config) { if (config is null) { throw new ArgumentNullException(nameof(config)); } var list = new ConfigurationSectionList(); foreach (var property in config.GetType().GetProperties()) { var section = property.GetValue(config); list.Add(AddSection(section, property)); } return(list); }
private static void ReadValue(string currentLine, StringReader reader, ConfigurationSectionList section) { if (currentLine.IndexOf(GroupOpen) >= 0) { ReadValues(currentLine, reader, section); } else { var split = currentLine.Split(Equal, 2); if (split.Length == 2) { section.Add(new KeyValuePair <string, object>(split[0].Trim(), split[1].Trim())); } if (currentLine[currentLine.Length - 1] == EndOfValue) { // skip future } } }
/// <summary> /// Converts a <see cref="Krb5Config"/> instance into a <see cref="ConfigurationSectionList" /> for possible future serialization. /// </summary> /// <param name="config">The configuration instance to load</param> /// <param name="serializationConfig">Serializer configuration options</param> /// <returns>Returns a sectioned version of the configuration</returns> public static ConfigurationSectionList FromConfigObject(Krb5Config config, Krb5ConfigurationSerializationConfig serializationConfig) { if (config is null) { throw new ArgumentNullException(nameof(config)); } if (serializationConfig == null) { serializationConfig = new Krb5ConfigurationSerializationConfig(); } var list = new ConfigurationSectionList(); foreach (var property in config.GetType().GetProperties(PublicInstancePropertyFlags)) { var section = property.GetValue(config); list.Add(AddSection(section, property, serializationConfig)); } return(list); }