Skip to content

Commit 2df2786

Browse files
committed
Fix the handling of aliases
1 parent 358fed1 commit 2df2786

File tree

1 file changed

+29
-47
lines changed

1 file changed

+29
-47
lines changed

VndbCharacterNames/Program.cs

Lines changed: 29 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -213,37 +213,7 @@ private static void ProcessFullNames(Dictionary<NameRecord, List<string>> nameTy
213213
{
214214
if (!surnames.Contains(aliasRecord.Name) && !givenNames.Contains(aliasRecord.Name))
215215
{
216-
string fullAliasWithoutAnyWhiteSpace = string.Join("", aliasRecord.Name.Split());
217-
if (sex is not null)
218-
{
219-
nameTypesDict.AddIfNotExists(new NameRecord(fullAliasWithoutAnyWhiteSpace, aliasRecord.NameInRomaji), sex);
220-
}
221-
222-
_ = convertedRecords.Add(new ConvertedNameRecord(fullAliasWithoutAnyWhiteSpace, aliasRecord.NameInRomaji, sex, definition));
223-
List<(NameRecord surnameRecord, NameRecord givenNameRecord)>? aliasSurnameAndNameRecords = GetSurnameAndNameRecords(aliasRecord.Name, aliasRecord.NameInRomaji);
224-
if (aliasSurnameAndNameRecords is not null)
225-
{
226-
string[] aliasSurnames = aliasSurnameAndNameRecords.Select(static r => r.surnameRecord.Name).ToArray();
227-
string[] aliasGivenNames = aliasSurnameAndNameRecords.Select(static r => r.givenNameRecord.Name).ToArray();
228-
foreach ((NameRecord aliasSurnameRecord, NameRecord aliasGivenNameRecord) in aliasSurnameAndNameRecords)
229-
{
230-
if (!aliasSurnames.Contains(aliasSurnameRecord.Name))
231-
{
232-
nameTypesDict.AddIfNotExists(aliasSurnameRecord, Utils.SurnameNameType);
233-
_ = convertedRecords.Add(new ConvertedNameRecord(aliasSurnameRecord.Name, aliasSurnameRecord.NameInRomaji));
234-
}
235-
236-
if (!aliasGivenNames.Contains(aliasGivenNameRecord.Name))
237-
{
238-
if (sex is not null)
239-
{
240-
nameTypesDict.AddIfNotExists(aliasGivenNameRecord, sex);
241-
}
242-
243-
_ = convertedRecords.Add(new ConvertedNameRecord(aliasGivenNameRecord.Name, aliasGivenNameRecord.NameInRomaji));
244-
}
245-
}
246-
}
216+
ProcessAlias(nameTypesDict, convertedRecords, aliasRecord, definition, sex);
247217
}
248218
}
249219
}
@@ -252,28 +222,40 @@ private static void ProcessFullNames(Dictionary<NameRecord, List<string>> nameTy
252222
{
253223
foreach (NameRecord aliasRecord in aliasRecords)
254224
{
255-
string fullAliasWithoutAnyWhiteSpace = string.Join("", aliasRecord.Name.Split());
256-
if (sex is not null)
225+
ProcessAlias(nameTypesDict, convertedRecords, aliasRecord, definition, sex);
226+
}
227+
}
228+
}
229+
230+
private static void ProcessAlias(Dictionary<NameRecord, List<string>> nameTypesDict, HashSet<ConvertedNameRecord> convertedRecords, NameRecord aliasRecord, string definition, string? sex)
231+
{
232+
string fullAliasWithoutAnyWhiteSpace = string.Join("", aliasRecord.Name.Split());
233+
if (sex is not null)
234+
{
235+
nameTypesDict.AddIfNotExists(new NameRecord(fullAliasWithoutAnyWhiteSpace, aliasRecord.NameInRomaji), sex);
236+
}
237+
238+
_ = convertedRecords.Add(new ConvertedNameRecord(fullAliasWithoutAnyWhiteSpace, aliasRecord.NameInRomaji, sex, definition));
239+
List<(NameRecord surnameRecord, NameRecord givenNameRecord)>? aliasSurnameAndNameRecords = GetSurnameAndNameRecords(aliasRecord.Name, aliasRecord.NameInRomaji);
240+
if (aliasSurnameAndNameRecords is not null)
241+
{
242+
for (int i = 0; i < aliasSurnameAndNameRecords.Count; i++)
243+
{
244+
(NameRecord aliasSurnameRecord, NameRecord aliasGivenNameRecord) = aliasSurnameAndNameRecords[i];
245+
if (!aliasSurnameAndNameRecords.Where((record, index) => index != i && aliasSurnameRecord.Name == record.surnameRecord.Name).Any())
257246
{
258-
nameTypesDict.AddIfNotExists(new NameRecord(fullAliasWithoutAnyWhiteSpace, aliasRecord.NameInRomaji), sex);
247+
nameTypesDict.AddIfNotExists(aliasSurnameRecord, Utils.SurnameNameType);
248+
_ = convertedRecords.Add(new ConvertedNameRecord(aliasSurnameRecord.Name, aliasSurnameRecord.NameInRomaji));
259249
}
260250

261-
_ = convertedRecords.Add(new ConvertedNameRecord(fullAliasWithoutAnyWhiteSpace, aliasRecord.NameInRomaji, sex, definition));
262-
List<(NameRecord surnameRecord, NameRecord givenNameRecord)>? aliasSurnameAndNameRecords = GetSurnameAndNameRecords(aliasRecord.Name, aliasRecord.NameInRomaji);
263-
if (aliasSurnameAndNameRecords is not null)
251+
if (!aliasSurnameAndNameRecords.Where((record, index) => index != i && aliasGivenNameRecord.Name == record.givenNameRecord.Name).Any())
264252
{
265-
foreach ((NameRecord aliasSurnameRecord, NameRecord aliasGivenNameRecord) in aliasSurnameAndNameRecords)
253+
if (sex is not null)
266254
{
267-
nameTypesDict.AddIfNotExists(aliasSurnameRecord, Utils.SurnameNameType);
268-
_ = convertedRecords.Add(new ConvertedNameRecord(aliasSurnameRecord.Name, aliasSurnameRecord.NameInRomaji));
269-
270-
if (sex is not null)
271-
{
272-
nameTypesDict.AddIfNotExists(aliasGivenNameRecord, sex);
273-
}
274-
275-
_ = convertedRecords.Add(new ConvertedNameRecord(aliasGivenNameRecord.Name, aliasGivenNameRecord.NameInRomaji));
255+
nameTypesDict.AddIfNotExists(aliasGivenNameRecord, sex);
276256
}
257+
258+
_ = convertedRecords.Add(new ConvertedNameRecord(aliasGivenNameRecord.Name, aliasGivenNameRecord.NameInRomaji));
277259
}
278260
}
279261
}

0 commit comments

Comments
 (0)