@@ -1374,11 +1374,16 @@ describe('yargs-parser', function () {
1374
1374
} )
1375
1375
1376
1376
describe ( 'array' , function ( ) {
1377
- it ( 'should group values into an array if the same option is specified multiple times' , function ( ) {
1378
- var parse = parser ( [ '-v' , 'a' , '-v' , 'b' , '-v' , 'c' ] )
1377
+ it ( 'should group values into an array if the same option is specified multiple times (duplicate-arguments-array=true) ' , function ( ) {
1378
+ var parse = parser ( [ '-v' , 'a' , '-v' , 'b' , '-v' , 'c' ] , { configuration : { 'duplicate-arguments-array' : true } } )
1379
1379
parse . should . have . property ( 'v' ) . and . deep . equal ( [ 'a' , 'b' , 'c' ] )
1380
1380
parse . should . have . property ( '_' ) . with . length ( 0 )
1381
1381
} )
1382
+ it ( 'should keep only the last value if the same option is specified multiple times (duplicate-arguments-false)' , function ( ) {
1383
+ var parse = parser ( [ '-v' , 'a' , '-v' , 'b' , '-v' , 'c' ] , { configuration : { 'duplicate-arguments-array' : false } } )
1384
+ parse . should . have . property ( 'v' ) . and . equal ( 'c' )
1385
+ parse . should . have . property ( '_' ) . with . length ( 0 )
1386
+ } )
1382
1387
1383
1388
it ( 'should default an array to an empty array if passed as first option followed by another' , function ( ) {
1384
1389
var result = parser ( [ '-a' , '-b' ] , {
@@ -2012,6 +2017,182 @@ describe('yargs-parser', function () {
2012
2017
parsed [ 'x' ] . should . deep . equal ( [ 'a' , 'b' ] )
2013
2018
} )
2014
2019
} )
2020
+
2021
+ describe ( 'duplicate-arguments-array VS flatten-duplicate-arrays' , function ( ) {
2022
+ /*
2023
+ duplicate=false, flatten=false
2024
+ type=array
2025
+ [-x 1 2 3] => [1, 2, 3]
2026
+ [-x 1 2 3 -x 2 3 4] => [2, 3, 4]
2027
+ type=string/number/etc
2028
+ [-x 1 -x 2 -x 3] => 3
2029
+
2030
+ duplicate=false, flatten=true
2031
+ type=array
2032
+ [-x 1 2 3] => [1, 2, 3]
2033
+ [-x 1 2 3 -x 2 3 4] => [2, 3, 4]
2034
+ type=string/number/etc
2035
+ [-x 1 -x 2 -x 3] => 3
2036
+
2037
+ duplicate=true, flatten=true
2038
+ type=array
2039
+ [-x 1 2 3] => [1, 2, 3]
2040
+ [-x 1 2 3 -x 2 3 4] => [1, 2, 3, 2, 3, 4]
2041
+ type=string/number/etc
2042
+ [-x 1 -x 2 -x 3] => [1, 2, 3]
2043
+
2044
+ duplicate=true, flatten=false
2045
+ type=array
2046
+ [-x 1 2 3] => [1, 2, 3]
2047
+ [-x 1 2 3 -x 2 3 4] => [[1, 2, 3], [2, 3, 4]]
2048
+ type=string/number/etc
2049
+ [-x 1 -x 2 -x 3] => [1, 2, 3]
2050
+ */
2051
+ describe ( 'duplicate=false, flatten=false,' , function ( ) {
2052
+ describe ( 'type=array' , function ( ) {
2053
+ it ( '[-x 1 2 3] => [1, 2, 3]' , function ( ) {
2054
+ var parsed = parser ( '-x 1 2 3' , {
2055
+ array : [ 'x' ] ,
2056
+ configuration : {
2057
+ 'duplicate-arguments-array' : false ,
2058
+ 'flatten-duplicate-arrays' : false
2059
+ }
2060
+ } )
2061
+ parsed [ 'x' ] . should . deep . equal ( [ 1 , 2 , 3 ] )
2062
+ } )
2063
+ it ( '[-x 1 2 3 -x 2 3 4] => [2, 3, 4]' , function ( ) {
2064
+ var parsed = parser ( '-x 1 2 3 -x 2 3 4' , {
2065
+ array : [ 'x' ] ,
2066
+ configuration : {
2067
+ 'duplicate-arguments-array' : false ,
2068
+ 'flatten-duplicate-arrays' : false
2069
+ }
2070
+ } )
2071
+ parsed [ 'x' ] . should . deep . equal ( [ 2 , 3 , 4 ] )
2072
+ } )
2073
+ } )
2074
+ describe ( 'type=number' , function ( ) {
2075
+ it ( '[-x 1 -x 2 -x 3] => 3' , function ( ) {
2076
+ var parsed = parser ( '-x 1 -x 2 -x 3' , {
2077
+ number : 'x' ,
2078
+ configuration : {
2079
+ 'duplicate-arguments-array' : false ,
2080
+ 'flatten-duplicate-arrays' : false
2081
+ }
2082
+ } )
2083
+ parsed [ 'x' ] . should . deep . equal ( 3 )
2084
+ } )
2085
+ } )
2086
+ } )
2087
+ describe ( 'duplicate=false, flatten=true,' , function ( ) {
2088
+ describe ( 'type=array' , function ( ) {
2089
+ it ( '[-x 1 2 3] => [1, 2, 3]' , function ( ) {
2090
+ var parsed = parser ( '-x 1 2 3' , {
2091
+ array : [ 'x' ] ,
2092
+ configuration : {
2093
+ 'duplicate-arguments-array' : false ,
2094
+ 'flatten-duplicate-arrays' : true
2095
+ }
2096
+ } )
2097
+ parsed [ 'x' ] . should . deep . equal ( [ 1 , 2 , 3 ] )
2098
+ } )
2099
+ it ( '[-x 1 2 3 -x 2 3 4] => [2, 3, 4]' , function ( ) {
2100
+ var parsed = parser ( '-x 1 2 3 -x 2 3 4' , {
2101
+ array : [ 'x' ] ,
2102
+ configuration : {
2103
+ 'duplicate-arguments-array' : false ,
2104
+ 'flatten-duplicate-arrays' : true
2105
+ }
2106
+ } )
2107
+ parsed [ 'x' ] . should . deep . equal ( [ 2 , 3 , 4 ] )
2108
+ } )
2109
+ } )
2110
+ describe ( 'type=number' , function ( ) {
2111
+ it ( '[-x 1 -x 2 -x 3] => 3' , function ( ) {
2112
+ var parsed = parser ( '-x 1 -x 2 -x 3' , {
2113
+ number : 'x' ,
2114
+ configuration : {
2115
+ 'duplicate-arguments-array' : false ,
2116
+ 'flatten-duplicate-arrays' : true
2117
+ }
2118
+ } )
2119
+ parsed [ 'x' ] . should . deep . equal ( 3 )
2120
+ } )
2121
+ } )
2122
+ } )
2123
+ describe ( 'duplicate=true, flatten=true,' , function ( ) {
2124
+ describe ( 'type=array' , function ( ) {
2125
+ it ( '[-x 1 2 3] => [1, 2, 3]' , function ( ) {
2126
+ var parsed = parser ( '-x 1 2 3' , {
2127
+ array : [ 'x' ] ,
2128
+ configuration : {
2129
+ 'duplicate-arguments-array' : true ,
2130
+ 'flatten-duplicate-arrays' : true
2131
+ }
2132
+ } )
2133
+ parsed [ 'x' ] . should . deep . equal ( [ 1 , 2 , 3 ] )
2134
+ } )
2135
+ it ( '[-x 1 2 3 -x 2 3 4] => [1, 2, 3, 2, 3, 4]' , function ( ) {
2136
+ var parsed = parser ( '-x 1 2 3 -x 2 3 4' , {
2137
+ array : [ 'x' ] ,
2138
+ configuration : {
2139
+ 'duplicate-arguments-array' : true ,
2140
+ 'flatten-duplicate-arrays' : true
2141
+ }
2142
+ } )
2143
+ parsed [ 'x' ] . should . deep . equal ( [ 1 , 2 , 3 , 2 , 3 , 4 ] )
2144
+ } )
2145
+ } )
2146
+ describe ( 'type=number' , function ( ) {
2147
+ it ( '[-x 1 -x 2 -x 3] => [1, 2, 3]' , function ( ) {
2148
+ var parsed = parser ( '-x 1 -x 2 -x 3' , {
2149
+ number : 'x' ,
2150
+ configuration : {
2151
+ 'duplicate-arguments-array' : true ,
2152
+ 'flatten-duplicate-arrays' : true
2153
+ }
2154
+ } )
2155
+ parsed [ 'x' ] . should . deep . equal ( [ 1 , 2 , 3 ] )
2156
+ } )
2157
+ } )
2158
+ } )
2159
+ describe ( 'duplicate=true, flatten=false,' , function ( ) {
2160
+ describe ( 'type=array' , function ( ) {
2161
+ it ( '[-x 1 -x 2 -x 3] => [1, 2, 3]' , function ( ) {
2162
+ var parsed = parser ( '-x 1 -x 2 -x 3' , {
2163
+ array : [ 'x' ] ,
2164
+ configuration : {
2165
+ 'duplicate-arguments-array' : true ,
2166
+ 'flatten-duplicate-arrays' : false
2167
+ }
2168
+ } )
2169
+ parsed [ 'x' ] . should . deep . equal ( [ 1 , 2 , 3 ] )
2170
+ } )
2171
+ it ( '[-x 1 2 3 -x 2 3 4] => [[1, 2, 3], [ 2, 3, 4]]' , function ( ) {
2172
+ var parsed = parser ( '-x 1 2 3 -x 2 3 4' , {
2173
+ array : [ 'x' ] ,
2174
+ configuration : {
2175
+ 'duplicate-arguments-array' : true ,
2176
+ 'flatten-duplicate-arrays' : false
2177
+ }
2178
+ } )
2179
+ parsed [ 'x' ] . should . deep . equal ( [ [ 1 , 2 , 3 ] , [ 2 , 3 , 4 ] ] )
2180
+ } )
2181
+ } )
2182
+ describe ( 'type=number' , function ( ) {
2183
+ it ( '[-x 1 -x 2 -x 3] => [1, 2, 3]' , function ( ) {
2184
+ var parsed = parser ( '-x 1 -x 2 -x 3' , {
2185
+ number : 'x' ,
2186
+ configuration : {
2187
+ 'duplicate-arguments-array' : true ,
2188
+ 'flatten-duplicate-arrays' : false
2189
+ }
2190
+ } )
2191
+ parsed [ 'x' ] . should . deep . equal ( [ 1 , 2 , 3 ] )
2192
+ } )
2193
+ } )
2194
+ } )
2195
+ } )
2015
2196
} )
2016
2197
2017
2198
// addresses: https://github.com/yargs/yargs-parser/issues/41
0 commit comments