Added a SkipString() method to the parser helper; began work in implementing a configuration file parser

git-svn-id: file:///srv/devel/repo-conversion/nusu@296 d2e56fa2-650e-0410-a79f-9358c0239efd
This commit is contained in:
Markus Ewald 2014-07-19 09:08:35 +00:00
parent 2210973528
commit c90033caad
5 changed files with 187 additions and 0 deletions

View file

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace Nuclex.Support.Configuration {
/// <summary>Represents an ini- or cfg-like configuration file</summary>
/// <remarks>
/// This class tries its best to preserve the formatting of configuration files.
/// Changing a value will keep the line it appears in intact.
/// </remarks>
public class ConfigurationFile {
/// <summary>Initializes a new, empty configuration file</summary>
public ConfigurationFile() {
this.lines = new List<string>();
}
/// <summary>Parses a configuration file from the specified text reader</summary>
/// <param name="reader">Reader the configuration file will be parsed from</param>
/// <returns>The configuration file parsed from the specified reader</returns>
public static ConfigurationFile Parse(TextReader reader) {
throw new NotImplementedException();
}
/// <summary>Saves the configuration file into the specified writer</summary>
/// <param name="writer">Writer the configuration file will be saved into</param>
public void Save(TextWriter writer) {
}
/// <summary>Lines contained in the configuration file</summary>
private IList<string> lines;
}
} // namespace Nuclex.Support.Configuration

View file

@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Nuclex.Support.Configuration {
/// <summary>Interface by which settings stored in a file can be accessed</summary>
public interface ISettings {
/// <summary>Enumerates the categories defined in the configuration</summary>
/// <returns>An enumerable list of all used categories</returns>
IEnumerable<string> EnumerateCategories();
/// <summary>Enumerates the options stored under the specified category</summary>
/// <param name="category">Category whose options will be enumerated</param>
/// <returns>An enumerable list of all options in the category</returns>
IEnumerable<OptionInfo> EnumerateOptions(string category = null);
TValue Get<TValue>(string category, string optionName);
TValue Get<TValue>(string optionName);
}
} // namespace Nuclex.Support.Configuration

View file

@ -0,0 +1,15 @@
using System;
namespace Nuclex.Support.Configuration {
/// <summary>Informations about an option stored in a settings container</summary>
public struct OptionInfo {
/// <summary>Name of the option</summary>
public string Name;
/// <summary>Data type of the option</summary>
public Type OptionType;
}
} // namespace Nuclex.Support.Configuration