using System.Collections.Generic; using SabreTools.Core.Tools; using SabreTools.Logging; namespace SabreTools.Filtering { public class ExtraIni { #region Fields /// /// List of extras to apply /// public List Items { get; set; } = new List(); #endregion #region Logging /// /// Logging object /// private readonly Logger logger; #endregion #region Constructors /// /// Constructor /// public ExtraIni() { logger = new Logger(this); } #endregion #region Extras Population /// /// Populate item using field:file inputs /// /// Field and file combinations public void PopulateFromList(List inputs) { foreach (string input in inputs) { ExtraIniItem item = new ExtraIniItem(); // 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."); return; } string inputTrimmed = input.Trim('"', ' ', '\t'); string fieldString = inputTrimmed.Split(':')[0].ToLowerInvariant().Trim('"', ' ', '\t'); string fileString = inputTrimmed[(fieldString.Length + 1)..].Trim('"', ' ', '\t'); item.DatItemField = fieldString.AsDatItemField(); item.MachineField = fieldString.AsMachineField(); if (item.PopulateFromFile(fileString)) Items.Add(item); } } #endregion } }