2020-08-21 10:15:38 -07:00
using System.Collections.Generic ;
2020-10-07 15:42:30 -07:00
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
2020-10-07 15:42:30 -07:00
#region Logging
/// <summary>
/// Logging object
/// </summary>
2020-10-07 16:11:05 -07:00
private readonly Logger logger = new Logger ( ) ;
2020-10-07 15:42:30 -07:00
#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 ( ":" ) )
{
2020-10-07 15:42:30 -07:00
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
}
}