@@ -115,23 +115,10 @@ final class newMain extends MainAnnotation[FromString, Any]:
115115 errors += msg
116116 }
117117
118- val namesToCanonicalName : Map [String , String ] = info.parameters.flatMap(
119- infos =>
120- val names = getAlternativeNames(infos)
121- val canonicalName = infos.name
122- if nameIsValid(canonicalName) then (canonicalName +: names).map(_ -> canonicalName)
123- else names.map(_ -> canonicalName)
124- ).toMap
125- val shortNamesToCanonicalName : Map [Char , String ] = info.parameters.flatMap(
126- infos =>
127- val names = getShortNames(infos)
128- val canonicalName = infos.name
129- if shortNameIsValid(canonicalName) then (canonicalName(0 ) +: names).map(_ -> canonicalName)
130- else names.map(_ -> canonicalName)
131- ).toMap
118+ val canonicalNames = CanonicalNames (info)
132119
133- val helpIsOverridden = namesToCanonicalName.exists((name, _) => name == helpArg)
134- val shortHelpIsOverridden = shortNamesToCanonicalName.exists((name, _) => name == shortHelpArg)
120+ val helpIsOverridden = canonicalNames.getName( helpArg).isDefined
121+ val shortHelpIsOverridden = canonicalNames.getShortName( shortHelpArg).isDefined
135122
136123 val displayHelp =
137124 (! helpIsOverridden && args.contains(getNameWithMarker(helpArg))) ||
@@ -146,9 +133,9 @@ final class newMain extends MainAnnotation[FromString, Any]:
146133 val (positionalArgs, byNameArgs, invalidByNameArgs) = {
147134 def getCanonicalArgName (arg : String ): Option [String ] =
148135 if arg.startsWith(argMarker) && arg.length > argMarker.length then
149- namesToCanonicalName.get (arg.drop(argMarker.length))
136+ canonicalNames.getName (arg.drop(argMarker.length))
150137 else if arg.startsWith(shortArgMarker) && arg.length == shortArgMarker.length + 1 then
151- shortNamesToCanonicalName.get (arg(shortArgMarker.length))
138+ canonicalNames.getShortName (arg(shortArgMarker.length))
152139 else
153140 None
154141
@@ -348,9 +335,33 @@ final class newMain extends MainAnnotation[FromString, Any]:
348335 execProgram()
349336 }
350337
338+ private class CanonicalNames (info : Info ):
339+ private val namesToCanonicalName : Map [String , String ] = info.parameters.flatMap(
340+ infos =>
341+ val names = getAlternativeNames(infos)
342+ val canonicalName = infos.name
343+ if nameIsValid(canonicalName) then (canonicalName +: names).map(_ -> canonicalName)
344+ else names.map(_ -> canonicalName)
345+ ).toMap
346+
347+ private val shortNamesToCanonicalName : Map [Char , String ] = info.parameters.flatMap(
348+ infos =>
349+ val names = getShortNames(infos)
350+ val canonicalName = infos.name
351+ if shortNameIsValid(canonicalName) then (canonicalName(0 ) +: names).map(_ -> canonicalName)
352+ else names.map(_ -> canonicalName)
353+ ).toMap
354+
355+ def getName (name : String ): Option [String ] = namesToCanonicalName.get(name)
356+
357+ def getShortName (name : Char ): Option [String ] = shortNamesToCanonicalName.get(name)
358+
359+ end CanonicalNames
360+
351361end newMain
352362
353363object newMain :
354364 @ experimental
355365 final class Alias (val aliases : String * ) extends MainAnnotation .ParameterAnnotation
366+
356367end newMain
0 commit comments