Files
SabreTools/SabreTools.Library/Filtering/ExtraIni.cs

60 lines
1.8 KiB
C#
Raw Normal View History

2020-08-21 10:15:38 -07:00
using System.Collections.Generic;
using SabreTools.Library.Logging;
2020-08-21 10:54:51 -07:00
using SabreTools.Library.Tools;
2020-08-21 10:15:38 -07:00
namespace SabreTools.Library.Filtering
{
public class ExtraIni
{
2020-08-21 10:38:42 -07:00
#region Fields
2020-08-21 10:15:38 -07:00
/// <summary>
/// List of extras to apply
/// </summary>
public List<ExtraIniItem> Items { get; set; } = new List<ExtraIniItem>();
2020-08-21 10:38:42 -07:00
#endregion
#region Logging
/// <summary>
/// Logging object
/// </summary>
private Logger logger = new Logger();
#endregion
2020-08-21 10:38:42 -07:00
#region Extras Population
/// <summary>
/// Populate item using field:file inputs
/// </summary>
/// <param name="inputs">Field and file combinations</param>
public void PopulateFromList(List<string> inputs)
{
foreach (string input in inputs)
{
ExtraIniItem item = new ExtraIniItem();
2020-08-21 10:54:51 -07:00
// If we don't even have a possible field and file combination
if (!input.Contains(":"))
{
logger.Warning($"'{input}` is not a valid INI extras string. Valid INI extras strings are of the form 'key:value'. Please refer to README.1ST or the help feature for more details.");
2020-08-21 10:54:51 -07:00
return;
}
string inputTrimmed = input.Trim('"', ' ', '\t');
string fieldString = inputTrimmed.Split(':')[0].ToLowerInvariant().Trim('"', ' ', '\t');
string fileString = inputTrimmed.Substring(fieldString.Length + 1).Trim('"', ' ', '\t');
item.Field = fieldString.AsField();
if (item.PopulateFromFile(fileString))
Items.Add(item);
2020-08-21 10:38:42 -07:00
}
}
#endregion
2020-08-21 10:15:38 -07:00
}
}