mirror of
https://github.com/kwsch/NHSE.git
synced 2026-04-24 23:27:14 -05:00
Merge + update specs
This commit is contained in:
commit
01f37e5845
|
|
@ -239,7 +239,15 @@ private static Item FinalizeItem(int requestIndex, IConfigItem config, ItemDesti
|
|||
}
|
||||
|
||||
private static readonly CompareInfo Comparer = CultureInfo.InvariantCulture.CompareInfo;
|
||||
private const CompareOptions opt = CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreSymbols | CompareOptions.IgnoreWidth;
|
||||
private const CompareOptions optIncludeSymbols = CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreWidth;
|
||||
private const CompareOptions optIgnoreSymbols = CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreSymbols | CompareOptions.IgnoreWidth;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a sensitive compare option, depending on the input string's qualities.
|
||||
/// </summary>
|
||||
/// <param name="str">Input string</param>
|
||||
/// <returns>Default options if no symbols,</returns>
|
||||
private static CompareOptions GetCompareOption(string str) => str.Any(ch => !char.IsLetterOrDigit(ch) && !char.IsWhiteSpace(ch)) ? optIgnoreSymbols & ~CompareOptions.IgnoreSymbols : optIgnoreSymbols;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the first item name-value that contains the <see cref="itemName"/> (case insensitive).
|
||||
|
|
@ -259,7 +267,7 @@ public static Item GetItem(string itemName, string lang = "en")
|
|||
/// <param name="itemName">Requested Item</param>
|
||||
/// <param name="strings">Game strings</param>
|
||||
/// <returns>Returns <see cref="Item.NO_ITEM"/> if no match found.</returns>
|
||||
public static Item GetItem(string itemName, IEnumerable<ComboItem> strings)
|
||||
public static Item GetItem(string itemName, IReadOnlyList<ComboItem> strings)
|
||||
{
|
||||
if (TryGetItem(itemName, strings, out var id))
|
||||
return new Item(id);
|
||||
|
|
@ -273,7 +281,14 @@ public static Item GetItem(string itemName, IEnumerable<ComboItem> strings)
|
|||
/// <param name="strings">List of item name-values</param>
|
||||
/// <param name="value">Item ID, if found. Otherwise, 0</param>
|
||||
/// <returns>True if found, false if none.</returns>
|
||||
public static bool TryGetItem(string itemName, IEnumerable<ComboItem> strings, out ushort value)
|
||||
public static bool TryGetItem(string itemName, IReadOnlyList<ComboItem> strings, out ushort value)
|
||||
{
|
||||
if (TryGetItem(itemName, strings, out value, optIncludeSymbols))
|
||||
return true;
|
||||
return TryGetItem(itemName, strings, out value, optIgnoreSymbols);
|
||||
}
|
||||
|
||||
private static bool TryGetItem(string itemName, IEnumerable<ComboItem> strings, out ushort value, CompareOptions opt)
|
||||
{
|
||||
foreach (var item in strings)
|
||||
{
|
||||
|
|
@ -294,8 +309,9 @@ public static bool TryGetItem(string itemName, IEnumerable<ComboItem> strings, o
|
|||
/// </summary>
|
||||
/// <param name="itemName">Item name</param>
|
||||
/// <param name="strings">Item names (and their Item ID values)</param>
|
||||
public static IEnumerable<ComboItem> GetItemsMatching(string itemName, IReadOnlyList<ComboItem> strings)
|
||||
public static IEnumerable<ComboItem> GetItemsMatching(string itemName, IEnumerable<ComboItem> strings)
|
||||
{
|
||||
var opt = GetCompareOption(itemName);
|
||||
foreach (var item in strings)
|
||||
{
|
||||
var result = Comparer.IndexOf(item.Text, itemName, opt);
|
||||
|
|
@ -313,7 +329,7 @@ public static IEnumerable<ComboItem> GetItemsMatching(string itemName, IReadOnly
|
|||
/// </remarks>
|
||||
/// <param name="itemName">Item name</param>
|
||||
/// <param name="strings">Item names (and their Item ID values)</param>
|
||||
public static IEnumerable<ComboItem> GetItemsMatchingOrdered(string itemName, IReadOnlyList<ComboItem> strings)
|
||||
public static IEnumerable<ComboItem> GetItemsMatchingOrdered(string itemName, IEnumerable<ComboItem> strings)
|
||||
{
|
||||
var matches = GetItemsMatching(itemName, strings);
|
||||
return GetItemsClosestOrdered(itemName, matches);
|
||||
|
|
|
|||
|
|
@ -5342,3 +5342,4 @@
|
|||
('FeatherGrn' , 'みどりのはね'),
|
||||
('FeatherPpl' , 'むらさきのはね'),
|
||||
('FeatherRainbow' , 'にじいろのはね'),
|
||||
('JuiceShamrock' , 'シャムロックソーダ'),
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ public static class ItemParsingTests
|
|||
{
|
||||
[Theory]
|
||||
[InlineData("diner sofa", 0x102D)]
|
||||
[InlineData("? block", 0x35FD)]
|
||||
[InlineData("block", 0x35FE)]
|
||||
public static void ParseItem(string name, ushort id)
|
||||
{
|
||||
// single
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user