Skip to content

Commit 013e12a

Browse files
author
jminz
authored
first try (#1)
1 parent 318983c commit 013e12a

File tree

1 file changed

+51
-22
lines changed

1 file changed

+51
-22
lines changed

lib/commands/show.js

Lines changed: 51 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,18 @@ const cmd = {
5757
default: false,
5858
describe: 'Show extra question details in source code'
5959
})
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+
})
6072
.positional('keyword', {
6173
type: 'string',
6274
default: '',
@@ -169,32 +181,49 @@ function showProblem(problem, argv) {
169181

170182
cmd.handler = function(argv) {
171183
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+
}
178199
} 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) {
194203
if (e) return log.fail(e);
195204
showProblem(problem, argv);
196205
});
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+
}
198227
}
199228
};
200229

0 commit comments

Comments
 (0)