diff --git a/SabreTools.Library/Filtering/ExtraIni.cs b/SabreTools.Library/Filtering/ExtraIni.cs
index b5f81a05..26338e5a 100644
--- a/SabreTools.Library/Filtering/ExtraIni.cs
+++ b/SabreTools.Library/Filtering/ExtraIni.cs
@@ -1,5 +1,8 @@
using System.Collections.Generic;
+using SabreTools.Library.Data;
+using SabreTools.Library.Tools;
+
namespace SabreTools.Library.Filtering
{
public class ExtraIni
@@ -24,8 +27,21 @@ namespace SabreTools.Library.Filtering
foreach (string input in inputs)
{
ExtraIniItem item = new ExtraIniItem();
- item.PopulateFromInput(input);
- Items.Add(item);
+
+ // If we don't even have a possible field and file combination
+ if (!input.Contains(":"))
+ {
+ Globals.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.Substring(fieldString.Length + 1).Trim('"', ' ', '\t');
+
+ item.Field = fieldString.AsField();
+ if (item.PopulateFromFile(fileString))
+ Items.Add(item);
}
}
diff --git a/SabreTools.Library/Filtering/ExtraIniItem.cs b/SabreTools.Library/Filtering/ExtraIniItem.cs
index 21cdedf6..ecf00fe9 100644
--- a/SabreTools.Library/Filtering/ExtraIniItem.cs
+++ b/SabreTools.Library/Filtering/ExtraIniItem.cs
@@ -4,7 +4,6 @@ using System.Collections.Generic;
using SabreTools.Library.Data;
using SabreTools.Library.DatItems;
using SabreTools.Library.IO;
-using SabreTools.Library.Tools;
namespace SabreTools.Library.Filtering
{
@@ -26,27 +25,6 @@ namespace SabreTools.Library.Filtering
#region Extras Population
- ///
- /// Populate item using a field:file input
- ///
- /// Field and file combination
- public void PopulateFromInput(string ini)
- {
- // If we don't even have a possible field and file combination
- if (!ini.Contains(":"))
- {
- Globals.Logger.Warning($"'{ini}` 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 iniTrimmed = ini.Trim('"', ' ', '\t');
- string iniFieldString = iniTrimmed.Split(':')[0].ToLowerInvariant().Trim('"', ' ', '\t');
- string iniFileString = iniTrimmed.Substring(iniFieldString.Length + 1).Trim('"', ' ', '\t');
-
- Field = iniFieldString.AsField();
- PopulateFromFile(iniFileString);
- }
-
///
/// Populate the dictionary from an INI file
///
@@ -59,7 +37,7 @@ namespace SabreTools.Library.Filtering
/// the value is boolean. If there's another section name, then that is set
/// as the value instead.
///
- public void PopulateFromFile(string ini)
+ public bool PopulateFromFile(string ini)
{
// Prepare all intenral variables
IniReader ir = ini.GetIniReader(false);
@@ -67,7 +45,7 @@ namespace SabreTools.Library.Filtering
// If we got a null reader, just return
if (ir == null)
- return;
+ return false;
// Otherwise, read the file to the end
try
@@ -107,15 +85,26 @@ namespace SabreTools.Library.Filtering
// Add the new mapping
Mappings[key].Add(value);
+
+ // Read the next line in
+ ir.ReadNextLine();
+ }
+
+ // Otherwise, just read the next line
+ else
+ {
+ ir.ReadNextLine();
}
}
}
catch (Exception ex)
{
Globals.Logger.Warning($"Exception found while parsing '{ini}': {ex}");
+ return false;
}
ir.Dispose();
+ return true;
}
#endregion