mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Wire up SoftwareList sharedfeat
This commit is contained in:
@@ -629,6 +629,25 @@ namespace SabreTools.Library.DatFiles
|
|||||||
machine.Supported = jtr.ReadAsString().AsYesNo();
|
machine.Supported = jtr.ReadAsString().AsYesNo();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case "sharedfeat":
|
||||||
|
machine.SharedFeatures = new List<KeyValuePair<string, string>>();
|
||||||
|
jtr.Read(); // Start Array
|
||||||
|
while (!sr.EndOfStream)
|
||||||
|
{
|
||||||
|
jtr.Read(); // Start object (or end array)
|
||||||
|
if (jtr.TokenType == JsonToken.EndArray)
|
||||||
|
break;
|
||||||
|
|
||||||
|
jtr.Read(); // Key
|
||||||
|
string key = jtr.Value as string;
|
||||||
|
string value = jtr.ReadAsString();
|
||||||
|
jtr.Read(); // End object
|
||||||
|
|
||||||
|
machine.SharedFeatures.Add(new KeyValuePair<string, string>(key, value));
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -1687,6 +1706,20 @@ namespace SabreTools.Library.DatFiles
|
|||||||
jtw.WriteValue("no");
|
jtw.WriteValue("no");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SharedFeatures, Header.ExcludeFields)))
|
||||||
|
{
|
||||||
|
jtw.WritePropertyName("sharedfeat");
|
||||||
|
jtw.WriteStartArray();
|
||||||
|
foreach (var feature in datItem.Machine.SharedFeatures)
|
||||||
|
{
|
||||||
|
jtw.WriteStartObject();
|
||||||
|
jtw.WritePropertyName(feature.Key);
|
||||||
|
jtw.WriteValue(feature.Value);
|
||||||
|
jtw.WriteEndObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
jtw.WriteEndArray();
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@@ -461,6 +461,17 @@ namespace SabreTools.Library.DatFiles
|
|||||||
machine.Supported = value.AsYesNo();
|
machine.Supported = value.AsYesNo();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case "Machine.SharedFeatures":
|
||||||
|
machine.SharedFeatures = new List<KeyValuePair<string, string>>();
|
||||||
|
var sharedFeatures = value.Split(';');
|
||||||
|
foreach (var sharedFeature in sharedFeatures)
|
||||||
|
{
|
||||||
|
var featurePair = sharedFeature.Split('=');
|
||||||
|
machine.SharedFeatures.Add(new KeyValuePair<string, string>(featurePair[0], featurePair[1]));
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#endregion // Machine
|
#endregion // Machine
|
||||||
@@ -1171,6 +1182,17 @@ namespace SabreTools.Library.DatFiles
|
|||||||
case "supported":
|
case "supported":
|
||||||
return "Machine.Supported";
|
return "Machine.Supported";
|
||||||
|
|
||||||
|
case "sharedfeat":
|
||||||
|
case "shared feat":
|
||||||
|
case "shared-feat":
|
||||||
|
case "sharedfeature":
|
||||||
|
case "shared feature":
|
||||||
|
case "shared-feature":
|
||||||
|
case "sharedfeatures":
|
||||||
|
case "shared features":
|
||||||
|
case "shared-features":
|
||||||
|
return "Machine.SharedFeatures";
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#endregion // Machine
|
#endregion // Machine
|
||||||
|
|||||||
@@ -146,6 +146,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
|
|
||||||
CloneOf = reader.GetAttribute("cloneof") ?? string.Empty,
|
CloneOf = reader.GetAttribute("cloneof") ?? string.Empty,
|
||||||
Infos = new List<KeyValuePair<string, string>>(),
|
Infos = new List<KeyValuePair<string, string>>(),
|
||||||
|
SharedFeatures = new List<KeyValuePair<string, string>>(),
|
||||||
|
|
||||||
MachineType = (machineType == MachineType.NULL ? MachineType.None : machineType),
|
MachineType = (machineType == MachineType.NULL ? MachineType.None : machineType),
|
||||||
};
|
};
|
||||||
@@ -184,8 +185,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case "sharedfeat":
|
case "sharedfeat":
|
||||||
// string sharedfeat_name = reader.GetAttribute("name");
|
machine.SharedFeatures.Add(new KeyValuePair<string, string>(reader.GetAttribute("name"), reader.GetAttribute("value")));
|
||||||
// string sharedfeat_value = reader.GetAttribute("value");
|
|
||||||
reader.Read();
|
reader.Read();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -742,6 +742,17 @@ namespace SabreTools.Library.DatFiles
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!Header.ExcludeFields.Contains(Field.SharedFeatures) && datItem.Machine.SharedFeatures != null && datItem.Machine.SharedFeatures.Count > 0)
|
||||||
|
{
|
||||||
|
foreach (KeyValuePair<string, string> kvp in datItem.Machine.SharedFeatures)
|
||||||
|
{
|
||||||
|
xtw.WriteStartElement("sharedfeat");
|
||||||
|
xtw.WriteAttributeString("name", kvp.Key);
|
||||||
|
xtw.WriteAttributeString("value", kvp.Value);
|
||||||
|
xtw.WriteEndElement();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
xtw.Flush();
|
xtw.Flush();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|||||||
@@ -222,6 +222,7 @@ namespace SabreTools.Library.DatItems
|
|||||||
|
|
||||||
// SoftwareList
|
// SoftwareList
|
||||||
Field.Supported,
|
Field.Supported,
|
||||||
|
Field.SharedFeatures,
|
||||||
};
|
};
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -90,6 +90,7 @@ namespace SabreTools.Library.DatItems
|
|||||||
#region SoftwareList
|
#region SoftwareList
|
||||||
|
|
||||||
Supported,
|
Supported,
|
||||||
|
SharedFeatures,
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@@ -165,6 +165,7 @@ namespace SabreTools.Library.DatItems
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// List of info items
|
/// List of info items
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>Also in SoftwareList</remarks>
|
||||||
[JsonProperty("infos")]
|
[JsonProperty("infos")]
|
||||||
public List<KeyValuePair<string, string>> Infos { get; set; } = null;
|
public List<KeyValuePair<string, string>> Infos { get; set; } = null;
|
||||||
|
|
||||||
@@ -253,6 +254,13 @@ namespace SabreTools.Library.DatItems
|
|||||||
[JsonProperty("supported")]
|
[JsonProperty("supported")]
|
||||||
public bool? Supported { get; set; } = true;
|
public bool? Supported { get; set; } = true;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// List of shared feature items
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>Also in SoftwareList</remarks>
|
||||||
|
[JsonProperty("sharedfeat")]
|
||||||
|
public List<KeyValuePair<string, string>> SharedFeatures { get; set; } = null;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -403,6 +411,9 @@ namespace SabreTools.Library.DatItems
|
|||||||
case Field.Supported:
|
case Field.Supported:
|
||||||
fieldValue = Supported?.ToString();
|
fieldValue = Supported?.ToString();
|
||||||
break;
|
break;
|
||||||
|
case Field.SharedFeatures:
|
||||||
|
fieldValue = string.Join(";", (SharedFeatures ?? new List<KeyValuePair<string, string>>()).Select(i => $"{i.Key}={i.Value}"));
|
||||||
|
break;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -572,6 +583,19 @@ namespace SabreTools.Library.DatItems
|
|||||||
if (mappings.Keys.Contains(Field.Supported))
|
if (mappings.Keys.Contains(Field.Supported))
|
||||||
Supported = mappings[Field.Supported].AsYesNo();
|
Supported = mappings[Field.Supported].AsYesNo();
|
||||||
|
|
||||||
|
if (mappings.Keys.Contains(Field.SharedFeatures))
|
||||||
|
{
|
||||||
|
if (SharedFeatures == null)
|
||||||
|
SharedFeatures = new List<KeyValuePair<string, string>>();
|
||||||
|
|
||||||
|
string[] pairs = mappings[Field.SharedFeatures].Split(';');
|
||||||
|
foreach (string pair in pairs)
|
||||||
|
{
|
||||||
|
string[] split = pair.Split('=');
|
||||||
|
SharedFeatures.Add(new KeyValuePair<string, string>(split[0], split[1]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -671,6 +695,7 @@ namespace SabreTools.Library.DatItems
|
|||||||
#region SoftwareList
|
#region SoftwareList
|
||||||
|
|
||||||
Supported = this.Supported,
|
Supported = this.Supported,
|
||||||
|
SharedFeatures = this.SharedFeatures,
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
};
|
};
|
||||||
@@ -1076,6 +1101,9 @@ namespace SabreTools.Library.DatItems
|
|||||||
if (fields.Contains(Field.Supported))
|
if (fields.Contains(Field.Supported))
|
||||||
Supported = null;
|
Supported = null;
|
||||||
|
|
||||||
|
if (fields.Contains(Field.SharedFeatures))
|
||||||
|
SharedFeatures = null;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1221,6 +1249,9 @@ namespace SabreTools.Library.DatItems
|
|||||||
if (fields.Contains(Field.Supported))
|
if (fields.Contains(Field.Supported))
|
||||||
Supported = machine.Supported;
|
Supported = machine.Supported;
|
||||||
|
|
||||||
|
if (fields.Contains(Field.SharedFeatures))
|
||||||
|
SharedFeatures = machine.SharedFeatures;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -212,6 +212,8 @@ namespace SabreTools.Library.Filtering
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public FilterItem<bool?> Supported { get; private set; } = new FilterItem<bool?>() { Neutral = null };
|
public FilterItem<bool?> Supported { get; private set; } = new FilterItem<bool?>() { Neutral = null };
|
||||||
|
|
||||||
|
// TODO: Machine.SharedFeatures - List<KeyValuePair<string, string>>
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#endregion // Machine Filters
|
#endregion // Machine Filters
|
||||||
|
|||||||
@@ -297,6 +297,16 @@ namespace SabreTools.Library.Tools
|
|||||||
|
|
||||||
case "supported":
|
case "supported":
|
||||||
return Field.Supported;
|
return Field.Supported;
|
||||||
|
case "sharedfeat":
|
||||||
|
case "shared feat":
|
||||||
|
case "shared-feat":
|
||||||
|
case "sharedfeature":
|
||||||
|
case "shared feature":
|
||||||
|
case "shared-feature":
|
||||||
|
case "sharedfeatures":
|
||||||
|
case "shared features":
|
||||||
|
case "shared-features":
|
||||||
|
return Field.SharedFeatures;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user