@@ -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