@@ -57,6 +57,18 @@ const cmd = {
57
57
default : false ,
58
58
describe : 'Show extra question details in source code'
59
59
} )
60
+ . option ( 'getRangeEnd' , {
61
+ alias : 'getRangeEnd' ,
62
+ type : 'string' ,
63
+ default : false ,
64
+ describe : 'End number of question range'
65
+ } )
66
+ . option ( 'getRangeStart' , {
67
+ alias : 'getRangeStart' ,
68
+ type : 'string' ,
69
+ default : false ,
70
+ describe : 'Start number of question range'
71
+ } )
60
72
. positional ( 'keyword' , {
61
73
type : 'string' ,
62
74
default : '' ,
@@ -169,32 +181,49 @@ function showProblem(problem, argv) {
169
181
170
182
cmd . handler = function ( argv ) {
171
183
session . argv = argv ;
172
- if ( argv . keyword . length > 0 ) {
173
- // show specific one
174
- core . getProblem ( argv . keyword , function ( e , problem ) {
175
- if ( e ) return log . fail ( e ) ;
176
- showProblem ( problem , argv ) ;
177
- } ) ;
184
+ let end = ( Number . parseInt ( argv . getRangeEnd ) >= 1 ) ? Number . parseInt ( argv . getRangeEnd ) : 1
185
+ let start = ( Number . parseInt ( argv . getRangeStart ) >= 1 ) ? Number . parseInt ( argv . getRangeStart ) : 1
186
+ if ( start > end ) { start = end }
187
+ if ( end ) {
188
+ let i = start
189
+ while ( i <= end ) {
190
+ ( function ( i ) {
191
+ setTimeout ( function ( ) {
192
+ core . getProblem ( i , function ( e , problem ) {
193
+ if ( e ) { return log . fail ( e ) ; }
194
+ showProblem ( problem , argv ) ;
195
+ } )
196
+ } , 50 * ( i - start ) )
197
+ } ) ( i ++ )
198
+ }
178
199
} else {
179
- // show random one
180
- core . filterProblems ( argv , function ( e , problems ) {
181
- if ( e ) return log . fail ( e ) ;
182
-
183
- // random select one that not AC-ed yet
184
- const user = session . getUser ( ) ;
185
- problems = problems . filter ( function ( x ) {
186
- if ( x . state === 'ac' ) return false ;
187
- if ( ! user . paid && x . locked ) return false ;
188
- return true ;
189
- } ) ;
190
- if ( problems . length === 0 ) return log . fail ( 'Problem not found!' ) ;
191
-
192
- const problem = _ . sample ( problems ) ;
193
- core . getProblem ( problem , function ( e , problem ) {
200
+ if ( argv . keyword . length > 0 ) {
201
+ // show specific one
202
+ core . getProblem ( argv . keyword , function ( e , problem ) {
194
203
if ( e ) return log . fail ( e ) ;
195
204
showProblem ( problem , argv ) ;
196
205
} ) ;
197
- } ) ;
206
+ } else {
207
+ // show random one
208
+ core . filterProblems ( argv , function ( e , problems ) {
209
+ if ( e ) return log . fail ( e ) ;
210
+
211
+ // random select one that not AC-ed yet
212
+ const user = session . getUser ( ) ;
213
+ problems = problems . filter ( function ( x ) {
214
+ if ( x . state === 'ac' ) return false ;
215
+ if ( ! user . paid && x . locked ) return false ;
216
+ return true ;
217
+ } ) ;
218
+ if ( problems . length === 0 ) return log . fail ( 'Problem not found!' ) ;
219
+
220
+ const problem = _ . sample ( problems ) ;
221
+ core . getProblem ( problem , function ( e , problem ) {
222
+ if ( e ) return log . fail ( e ) ;
223
+ showProblem ( problem , argv ) ;
224
+ } ) ;
225
+ } ) ;
226
+ }
198
227
}
199
228
} ;
200
229
0 commit comments