@@ -115,23 +115,10 @@ final class newMain extends MainAnnotation[FromString, Any]:
115
115
errors += msg
116
116
}
117
117
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)
132
119
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
135
122
136
123
val displayHelp =
137
124
(! helpIsOverridden && args.contains(getNameWithMarker(helpArg))) ||
@@ -146,9 +133,9 @@ final class newMain extends MainAnnotation[FromString, Any]:
146
133
val (positionalArgs, byNameArgs, invalidByNameArgs) = {
147
134
def getCanonicalArgName (arg : String ): Option [String ] =
148
135
if arg.startsWith(argMarker) && arg.length > argMarker.length then
149
- namesToCanonicalName.get (arg.drop(argMarker.length))
136
+ canonicalNames.getName (arg.drop(argMarker.length))
150
137
else if arg.startsWith(shortArgMarker) && arg.length == shortArgMarker.length + 1 then
151
- shortNamesToCanonicalName.get (arg(shortArgMarker.length))
138
+ canonicalNames.getShortName (arg(shortArgMarker.length))
152
139
else
153
140
None
154
141
@@ -348,9 +335,33 @@ final class newMain extends MainAnnotation[FromString, Any]:
348
335
execProgram()
349
336
}
350
337
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
+
351
361
end newMain
352
362
353
363
object newMain :
354
364
@ experimental
355
365
final class Alias (val aliases : String * ) extends MainAnnotation .ParameterAnnotation
366
+
356
367
end newMain
0 commit comments