@@ -56,7 +56,6 @@ class ArgParser(args: Array<out String>,
5656 fun flagging (vararg names : String , help : String ): Delegate <Boolean > =
5757 option<Boolean >(
5858 * names,
59- errorName = optionNamesToErrorName(names),
6059 help = help) { true }.default(false )
6160
6261 /* *
@@ -71,7 +70,6 @@ class ArgParser(args: Array<out String>,
7170 fun counting (vararg names : String , help : String ): Delegate <Int > =
7271 option<Int >(
7372 * names,
74- errorName = optionNamesToErrorName(names),
7573 isRepeating = true ,
7674 help = help) { value.orElse { 0 } + 1 }.default(0 )
7775
@@ -86,13 +84,14 @@ class ArgParser(args: Array<out String>,
8684 fun <T > storing (
8785 vararg names : String ,
8886 help : String ,
87+ argName : String? = null,
8988 transform : String .() -> T
9089 ): Delegate <T > {
91- val errorName = optionNamesToErrorName( names)
90+ val nonNullArgName = argName ? : optionNameToArgName(selectRepresentativeOptionName( names) )
9291 return option(
9392 * names,
94- errorName = errorName ,
95- argNames = listOf (errorName ),
93+ errorName = nonNullArgName ,
94+ argNames = listOf (nonNullArgName ),
9695 help = help) { transform(arguments.first()) }
9796 }
9897
@@ -101,8 +100,9 @@ class ArgParser(args: Array<out String>,
101100 */
102101 fun <T > storing (
103102 help : String ,
103+ argName : String? = null,
104104 transform : String .() -> T
105- ) = DelegateProvider { identifier -> storing(identifierToOptionName(identifier), help = help, transform = transform) }
105+ ) = DelegateProvider { identifier -> storing(identifierToOptionName(identifier), help = help, argName = argName, transform = transform) }
106106
107107 /* *
108108 * Creates a Delegate for a single-argument option that stores and returns the option's argument.
@@ -122,15 +122,15 @@ class ArgParser(args: Array<out String>,
122122 fun <E , T : MutableCollection <E >> adding (
123123 vararg names : String ,
124124 help : String ,
125+ argName : String? = null,
125126 initialValue : T ,
126127 transform : String .() -> E
127128 ): Delegate <T > {
128- val errorName = optionNamesToErrorName( names)
129+ val nonNullArgName = argName ? : optionNameToArgName(selectRepresentativeOptionName( names) )
129130 return option<T >(
130131 * names,
131- errorName = errorName,
132132 help = help,
133- argNames = listOf (errorName ),
133+ argNames = listOf (nonNullArgName ),
134134 isRepeating = true ) {
135135 val result = value.orElse { initialValue }
136136 result.add(transform(arguments.first()))
@@ -144,10 +144,11 @@ class ArgParser(args: Array<out String>,
144144 */
145145 fun <E , T : MutableCollection <E >> adding (
146146 help : String ,
147+ argName : String? = null,
147148 initialValue : T ,
148149 transform : String .() -> E
149150 ) = DelegateProvider { identifier ->
150- adding(identifierToOptionName(identifier), initialValue = initialValue, help = help , transform = transform) }
151+ adding(identifierToOptionName(identifier), help = help, argName = argName, initialValue = initialValue , transform = transform) }
151152
152153 /* *
153154 * Creates a Delegate for a single-argument option that adds the option's (transformed) argument to a
@@ -156,8 +157,9 @@ class ArgParser(args: Array<out String>,
156157 fun <T > adding (
157158 vararg names : String ,
158159 help : String ,
160+ argName : String? = null,
159161 transform : String .() -> T
160- ) = adding(* names, initialValue = mutableListOf (), help = help , transform = transform)
162+ ) = adding(* names, help = help, argName = argName, initialValue = mutableListOf () , transform = transform)
161163
162164 /* *
163165 * Creates a DelegateProvider for a single-argument option that adds the option's (transformed) argument to a
@@ -208,7 +210,8 @@ class ArgParser(args: Array<out String>,
208210 /* *
209211 * Creates a Delegate for an option with the specified names.
210212 * @param names names of options, with leading "-" or "--"
211- * @param errorName name to use when talking about this option in error messages
213+ * @param errorName name to use when talking about this option in error messages, or null to base it upon the
214+ * option names
212215 * @param help the help text for this option
213216 * @param argNames names of this option's arguments
214217 * @param isRepeating whether or not it make sense to repeat this option -- usually used for options where
@@ -219,15 +222,14 @@ class ArgParser(args: Array<out String>,
219222 // TODO: add optionalArg: Boolean
220223 vararg names : String ,
221224 help : String ,
222- // TODO: make errorName nullable, and choose name from option names if null
223- errorName : String ,
225+ errorName : String? = null,
224226 argNames : List <String > = emptyList(),
225227 isRepeating : Boolean = false,
226228 handler : OptionInvocation <T >.() -> T
227229 ): Delegate <T > {
228230 val delegate = OptionDelegate <T >(
229231 parser = this ,
230- errorName = errorName,
232+ errorName = errorName ? : optionNameToArgName(selectRepresentativeOptionName(names)) ,
231233 help = help,
232234 optionNames = listOf (* names),
233235 argNames = argNames.toList(),
@@ -760,10 +762,6 @@ class ArgParser(args: Array<out String>,
760762 return names[0 ]
761763 }
762764
763- internal fun optionNamesToErrorName (names : Array <out String >): String {
764- return optionNameToArgName(selectRepresentativeOptionName(names))
765- }
766-
767765 private fun optionNameToArgName (name : String ) =
768766 LEADING_HYPHENS .replace(name, " " ).toUpperCase().replace(' -' , ' _' )
769767
0 commit comments