lscontests 1.8.13 → 1.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +94 -101
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.js +57 -33
- package/dist/index.js.map +1 -1
- package/dist/lib/oj/codeforces.js +1 -1
- package/dist/lib/oj/codeforces.js.map +1 -1
- package/dist/lib/oj/luogu.js +1 -1
- package/dist/lib/oj/luogu.js.map +1 -1
- package/dist/locale/en.json +4 -1
- package/dist/locale/index.d.ts +4 -1
- package/dist/locale/index.js.map +1 -1
- package/dist/locale/zh-CN.json +4 -1
- package/dist/locale/zh-NE.json +11 -0
- package/dist/locale/zh-TW.json +4 -1
- package/package.json +1 -1
package/README.md
CHANGED
@@ -40,8 +40,8 @@ Options:
|
|
40
40
|
-l, --list list all supported OJ and it's abbreviation
|
41
41
|
-o, --oj <ojs...> OJs to display (choices: "at", "cf", "lg", "nc")
|
42
42
|
-r, --raw print raw contest list
|
43
|
-
-L, --language <lang> set output language (choices: "en", "zh-CN", "zh-
|
44
|
-
default: "zh-CN")
|
43
|
+
-L, --language <lang> set output language (choices: "en", "zh-CN", "zh-NE",
|
44
|
+
"zh-TW", default: "zh-CN")
|
45
45
|
--no-sort do not sort by contests start time, but by OJ order
|
46
46
|
-h, --help display help for command
|
47
47
|
```
|
@@ -50,13 +50,13 @@ Options:
|
|
50
50
|
It performs as follows:
|
51
51
|
|
52
52
|
<!-- block_cli begin -->
|
53
|
-
(*The following content was automatically generated in
|
53
|
+
(*The following content was automatically generated in Sat, 14 May 2022 01:14:20 GMT*)
|
54
54
|
|
55
55
|
<details>
|
56
56
|
<summary> <code>> lsct </code> </summary>
|
57
57
|
|
58
58
|
```text
|
59
|
-
|
59
|
+
在 AtCoder,Codeforces,Luogu,NowCoder 上有 2 场正在进行的比赛
|
60
60
|
|
61
61
|
比赛平台: NowCoder
|
62
62
|
比赛名称:牛客竞赛博弈专题班 Sprague-Grundy 函数(SG 函数、图游戏、Nim 和)
|
@@ -72,19 +72,7 @@ https://ac.nowcoder.com/acm/contest/34655
|
|
72
72
|
结束时间: 5/30/2022, 08:00:00
|
73
73
|
https://ac.nowcoder.com/acm/contest/34649
|
74
74
|
|
75
|
-
|
76
|
-
比赛名称:牛客挑战赛 60
|
77
|
-
赛制: ICPC
|
78
|
-
开始时间: 5/13/2022, 11:00:00
|
79
|
-
结束时间: 5/13/2022, 14:00:00
|
80
|
-
https://ac.nowcoder.com/acm/contest/11200
|
81
|
-
|
82
|
-
比赛平台: Codeforces
|
83
|
-
比赛名称: Educational Codeforces Round 128 (Rated for Div. 2)
|
84
|
-
赛制: ICPC
|
85
|
-
开始时间: 5/13/2022, 14:35:00
|
86
|
-
结束时间: 5/13/2022, 16:35:00
|
87
|
-
https://codeforces.com/contests/1680
|
75
|
+
接下来的 3 天内在 AtCoder,Codeforces,Luogu,NowCoder 上有 8 场比赛
|
88
76
|
|
89
77
|
比赛平台: NowCoder
|
90
78
|
比赛名称:第二届天元编程邀请赛(提高组)
|
@@ -149,14 +137,9 @@ https://atcoder.jp/contests/arc140
|
|
149
137
|
<summary> <code>> lsct -o at cf -d 7</code> </summary>
|
150
138
|
|
151
139
|
```text
|
152
|
-
|
140
|
+
在 AtCoder,Codeforces 上没有正在进行的比赛捏
|
153
141
|
|
154
|
-
|
155
|
-
比赛名称: Educational Codeforces Round 128 (Rated for Div. 2)
|
156
|
-
赛制: ICPC
|
157
|
-
开始时间: 5/13/2022, 14:35:00
|
158
|
-
结束时间: 5/13/2022, 16:35:00
|
159
|
-
https://codeforces.com/contests/1680
|
142
|
+
接下来的 7 天内在 AtCoder,Codeforces 上有 3 场比赛
|
160
143
|
|
161
144
|
比赛平台: Codeforces
|
162
145
|
比赛名称: Codeforces Round #791 (Div. 2)
|
@@ -186,7 +169,7 @@ https://atcoder.jp/contests/arc140
|
|
186
169
|
<summary> <code>> lsct -o lg nc -d 7 -L en</code> </summary>
|
187
170
|
|
188
171
|
```text
|
189
|
-
|
172
|
+
There are 2 contests is running on Luogu,NowCoder
|
190
173
|
|
191
174
|
OJ: NowCoder
|
192
175
|
Contest name: 牛客竞赛博弈专题班 Sprague-Grundy 函数(SG 函数、图游戏、Nim 和)
|
@@ -202,12 +185,7 @@ Start time: 5/13/2022, 06:00:00
|
|
202
185
|
End time: 5/30/2022, 08:00:00
|
203
186
|
https://ac.nowcoder.com/acm/contest/34649
|
204
187
|
|
205
|
-
|
206
|
-
Contest name: 牛客挑战赛 60
|
207
|
-
Rule: ICPC
|
208
|
-
Start time: 5/13/2022, 11:00:00
|
209
|
-
End time: 5/13/2022, 14:00:00
|
210
|
-
https://ac.nowcoder.com/acm/contest/11200
|
188
|
+
There are 5 contests on Luogu,NowCoder in the next 7 days
|
211
189
|
|
212
190
|
OJ: NowCoder
|
213
191
|
Contest name: 第二届天元编程邀请赛(提高组)
|
@@ -251,40 +229,35 @@ https://www.luogu.com.cn/contest/67377
|
|
251
229
|
<summary> <code>> lsct -o at cf -d 7 -r --no-sort</code> </summary>
|
252
230
|
|
253
231
|
```json
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
"startTime": "2022-05-13T14:35:00.000Z",
|
284
|
-
"endTime": "2022-05-13T16:35:00.000Z",
|
285
|
-
"url": "https://codeforces.com/contests/1680"
|
286
|
-
}
|
287
|
-
]
|
232
|
+
{
|
233
|
+
"running": [],
|
234
|
+
"upcoming": [
|
235
|
+
{
|
236
|
+
"ojName": "AtCoder",
|
237
|
+
"name": "Ⓐ Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)",
|
238
|
+
"rule": "AtCoder",
|
239
|
+
"startTime": "2022-05-14T12:00:00.000Z",
|
240
|
+
"endTime": "2022-05-14T13:40:00.000Z",
|
241
|
+
"url": "https://atcoder.jp/contests/abc251"
|
242
|
+
},
|
243
|
+
{
|
244
|
+
"ojName": "AtCoder",
|
245
|
+
"name": "Ⓐ AtCoder Regular Contest 140",
|
246
|
+
"rule": "AtCoder",
|
247
|
+
"startTime": "2022-05-15T12:00:00.000Z",
|
248
|
+
"endTime": "2022-05-15T14:00:00.000Z",
|
249
|
+
"url": "https://atcoder.jp/contests/arc140"
|
250
|
+
},
|
251
|
+
{
|
252
|
+
"ojName": "Codeforces",
|
253
|
+
"name": "Codeforces Round #791 (Div. 2)",
|
254
|
+
"rule": "Codeforces",
|
255
|
+
"startTime": "2022-05-14T09:35:00.000Z",
|
256
|
+
"endTime": "2022-05-14T11:35:00.000Z",
|
257
|
+
"url": "https://codeforces.com/contests/1679"
|
258
|
+
}
|
259
|
+
]
|
260
|
+
}
|
288
261
|
```
|
289
262
|
|
290
263
|
</details>
|
@@ -299,7 +272,7 @@ If you want to get a list of contest information in your project by calling *lsc
|
|
299
272
|
```typescript
|
300
273
|
import { getContestInfo } from "lscontests";
|
301
274
|
|
302
|
-
|
275
|
+
getContestsInfoText({ abbrList: ["cf", "lg"] }).then(console.log);
|
303
276
|
```
|
304
277
|
|
305
278
|
This code gives the same result as `lsct -o cf lg`.
|
@@ -309,7 +282,7 @@ This code gives the same result as `lsct -o cf lg`.
|
|
309
282
|
```typescript
|
310
283
|
import { getContestList } from "lscontests";
|
311
284
|
|
312
|
-
|
285
|
+
getContests({ sort: false }).then(console.log);
|
313
286
|
```
|
314
287
|
|
315
288
|
This code gives the same result as `lsct -r --no-sort`.
|
@@ -317,23 +290,23 @@ This code gives the same result as `lsct -r --no-sort`.
|
|
317
290
|
#### Add OJ support
|
318
291
|
|
319
292
|
```typescript
|
320
|
-
import { addOJ,
|
293
|
+
import { addOJ, getContestsInfoText, getContests } from "lscontests";
|
321
294
|
|
322
295
|
addOJ("ts", {
|
323
296
|
name: "testOJ", get: async () => [{
|
324
297
|
ojName: "testOJ",
|
325
298
|
name: "testContest",
|
326
299
|
rule: "ICPC",
|
327
|
-
startTime: new Date(Date.now()
|
328
|
-
endTime: new Date(Date.now() +
|
300
|
+
startTime: new Date(Date.now() - 1),
|
301
|
+
endTime: new Date(Date.now() + 3600000),
|
329
302
|
url: "https://www.test.com"
|
330
303
|
}]
|
331
304
|
});
|
332
305
|
|
333
306
|
async function main() {
|
334
|
-
console.log(await
|
307
|
+
console.log(await getContestsInfoText({ abbrList: ["cf", "ts"], days: 1 }, "en"));
|
335
308
|
console.log();
|
336
|
-
console.log(await
|
309
|
+
console.log(await getContests({ abbrList: ["at", "ts"], days: 7 }));
|
337
310
|
}
|
338
311
|
|
339
312
|
main();
|
@@ -342,41 +315,61 @@ main();
|
|
342
315
|
This code gives the following results:
|
343
316
|
|
344
317
|
```text
|
345
|
-
|
318
|
+
There are 2 contests is running on Codeforces,testOJ
|
319
|
+
|
320
|
+
OJ: Codeforces
|
321
|
+
Contest name: Educational Codeforces Round 128 (Rated for Div. 2)
|
322
|
+
Rule: ICPC
|
323
|
+
Start time: 2022/5/13 22:35:00
|
324
|
+
End time: 2022/5/14 00:35:00
|
325
|
+
https://codeforces.com/contests/1680
|
346
326
|
|
347
327
|
OJ: testOJ
|
348
328
|
Contest name: testContest
|
349
329
|
Rule: ICPC
|
350
|
-
Start time: 2022/5/13
|
351
|
-
End time: 2022/5/14
|
330
|
+
Start time: 2022/5/13 23:23:31
|
331
|
+
End time: 2022/5/14 00:23:31
|
352
332
|
https://www.test.com
|
353
333
|
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
334
|
+
There are 1 contests on Codeforces,testOJ in the next 1 days
|
335
|
+
|
336
|
+
OJ: Codeforces
|
337
|
+
Contest name: Codeforces Round #791 (Div. 2)
|
338
|
+
Rule: Codeforces
|
339
|
+
Start time: 2022/5/14 17:35:00
|
340
|
+
End time: 2022/5/14 19:35:00
|
341
|
+
https://codeforces.com/contests/1679
|
342
|
+
|
343
|
+
{
|
344
|
+
running: [
|
345
|
+
{
|
346
|
+
ojName: 'testOJ',
|
347
|
+
name: 'testContest',
|
348
|
+
rule: 'ICPC',
|
349
|
+
startTime: 2022-05-13T15:23:37.245Z,
|
350
|
+
endTime: 2022-05-13T16:23:37.246Z,
|
351
|
+
url: 'https://www.test.com'
|
352
|
+
}
|
353
|
+
],
|
354
|
+
upcoming: [
|
355
|
+
{
|
356
|
+
ojName: 'AtCoder',
|
357
|
+
name: 'Ⓐ Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)',
|
358
|
+
rule: 'AtCoder',
|
359
|
+
startTime: 2022-05-14T12:00:00.000Z,
|
360
|
+
endTime: 2022-05-14T13:40:00.000Z,
|
361
|
+
url: 'https://atcoder.jp/contests/abc251'
|
362
|
+
},
|
363
|
+
{
|
364
|
+
ojName: 'AtCoder',
|
365
|
+
name: 'Ⓐ AtCoder Regular Contest 140',
|
366
|
+
rule: 'AtCoder',
|
367
|
+
startTime: 2022-05-15T12:00:00.000Z,
|
368
|
+
endTime: 2022-05-15T14:00:00.000Z,
|
369
|
+
url: 'https://atcoder.jp/contests/arc140'
|
370
|
+
}
|
371
|
+
]
|
372
|
+
}
|
380
373
|
```
|
381
374
|
|
382
375
|
#### Use link CLI
|
package/dist/cli.js
CHANGED
@@ -64,9 +64,9 @@ function cli(arg, name) {
|
|
64
64
|
sort: opts.sort
|
65
65
|
};
|
66
66
|
if (opts.raw)
|
67
|
-
return JSON.stringify(yield (0, _1.
|
67
|
+
return JSON.stringify(yield (0, _1.getContests)(config), null, 2);
|
68
68
|
else
|
69
|
-
return yield (0, _1.
|
69
|
+
return yield (0, _1.getContestsInfoText)(config, opts.language);
|
70
70
|
}
|
71
71
|
});
|
72
72
|
}
|
package/dist/cli.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,kDAA+C;AAC/C,yCAA4C;AAC5C,iCAAiC;AACjC,
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,kDAA+C;AAC/C,yCAA4C;AAC5C,iCAAiC;AACjC,wBAA6D;AAC7D,qCAAoC;AACpC,oDAAuB;AAEvB,SAAS,OAAO;IAEZ,OAAO,IAAI,mBAAO,EAAE;SACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACzB,OAAO,CAAC,sBAAO,CAAC;SAChB,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,GAAG,CAAC;SAC7D,MAAM,CAAC,YAAY,EAAE,6CAA6C,CAAC;SACnE,SAAS,CAAC,IAAI,kBAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAK,CAAC,CAAC,CAAC;SACxF,SAAS,CAAC,IAAI,kBAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;SAClF,SAAS,CAAC,IAAI,kBAAM,CAAC,uBAAuB,EAAE,qBAAqB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAQ,CAAC,CAAC;SACxG,MAAM,CAAC,WAAW,EAAE,qDAAqD,CAAC,CAAC;AACpF,CAAC;AAED,SAAsB,GAAG,CAAC,GAAY,EAAE,IAAa;;QAEjD,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,IAAG,GAAG,KAAK,SAAS;YAAE,GAAG,CAAC,KAAK,EAAE,CAAC;aAElC;YACI,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,IACA;gBACI,IAAG,IAAI;oBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxB,GAAG;qBACE,eAAe,CAAC;oBACb,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG;oBAC1B,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG;oBAC1B,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG;iBAChC,CAAC;qBACD,YAAY,EAAE;qBACd,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;aAChD;YACD,OAAM,CAAC,EAAE;gBAAE,OAAO,GAAG,CAAC;aAAE;SAC3B;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAG,IAAI,CAAC,IAAI;YAAE,OAAO,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAC,CAAC,SAAS,CAAC,UAAK,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;aAEtG;YACI,MAAM,MAAM,GAAW;gBACnB,QAAQ,EAAE,gBAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAc;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;aAClB,CAAC;YACF,IAAG,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,IAAA,cAAW,EAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;;gBAClE,OAAO,MAAM,IAAA,sBAAmB,EAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAChE;IACL,CAAC;CAAA;AAlCD,kBAkCC;AAED,IAAG,OAAO,CAAC,IAAI,KAAK,MAAM;IAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
@@ -1,9 +1,13 @@
|
|
1
|
+
import { contest } from "./lib/contest";
|
1
2
|
export declare type config = {
|
2
3
|
abbrList?: string[];
|
3
4
|
days?: number;
|
4
5
|
sort?: boolean;
|
5
6
|
};
|
6
|
-
export declare function
|
7
|
-
|
7
|
+
export declare function getContests(config?: config): Promise<{
|
8
|
+
running: contest[];
|
9
|
+
upcoming: contest[];
|
10
|
+
}>;
|
11
|
+
export declare function getContestsInfoText(config?: config, language?: string): Promise<string>;
|
8
12
|
export { cli } from "./cli";
|
9
13
|
export { addOJ } from "./lib/oj";
|
package/dist/index.js
CHANGED
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
13
|
};
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
-
exports.addOJ = exports.cli = exports.
|
15
|
+
exports.addOJ = exports.cli = exports.getContestsInfoText = exports.getContests = void 0;
|
16
16
|
const oj_1 = require("./lib/oj");
|
17
17
|
const locale_1 = require("./locale");
|
18
18
|
const lodash_1 = __importDefault(require("lodash"));
|
@@ -28,51 +28,75 @@ function resolveConfig(config) {
|
|
28
28
|
cfg.abbrList = defaultConfig.abbrList;
|
29
29
|
return cfg;
|
30
30
|
}
|
31
|
-
function
|
31
|
+
function getContests(config) {
|
32
32
|
return __awaiter(this, void 0, void 0, function* () {
|
33
33
|
const cfg = resolveConfig(config);
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
34
|
+
function ls(fn) {
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
36
|
+
return (yield Promise.all(cfg.abbrList.map((abbr) => __awaiter(this, void 0, void 0, function* () {
|
37
|
+
try {
|
38
|
+
return (yield oj_1.alloj[abbr].get()).filter(fn);
|
39
|
+
}
|
40
|
+
catch (e) {
|
41
|
+
console.error(`Failed to get match information for ${oj_1.alloj[abbr].name}, details:`);
|
42
|
+
console.error(e);
|
43
|
+
return [];
|
44
|
+
}
|
45
|
+
})))).reduce((ls1, ls2) => ls1.concat(ls2));
|
46
|
+
});
|
47
|
+
}
|
48
|
+
const ret = {
|
49
|
+
running: yield ls(ct => ct.startTime <= new Date() && ct.endTime > new Date()),
|
50
|
+
upcoming: yield ls(ct => ct.startTime > new Date() && ct.startTime <= new Date(Date.now() + cfg.days * 86400000))
|
51
|
+
};
|
45
52
|
if (cfg.sort)
|
46
|
-
|
47
|
-
return
|
53
|
+
Object.values(ret).forEach(ct => ct.sort((a, b) => a.startTime.getTime() - b.startTime.getTime()));
|
54
|
+
return ret;
|
48
55
|
});
|
49
56
|
}
|
50
|
-
exports.
|
51
|
-
function
|
57
|
+
exports.getContests = getContests;
|
58
|
+
function getContestsInfoText(config, language = "zh-CN") {
|
52
59
|
return __awaiter(this, void 0, void 0, function* () {
|
53
60
|
const cfg = resolveConfig(config);
|
54
61
|
const lang = yield (0, locale_1.getLangDict)(language);
|
55
|
-
const
|
62
|
+
const { running, upcoming } = yield getContests(cfg);
|
56
63
|
const info = [];
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
64
|
+
const oj = cfg.abbrList.map(abbr => oj_1.alloj[abbr].name).join(",");
|
65
|
+
function msg(contests) {
|
66
|
+
return contests.map(contest => {
|
67
|
+
const ls = [];
|
68
|
+
ls.push(`${lang.ojName}: ${contest.ojName}`);
|
69
|
+
ls.push(`${lang.name}: ${contest.name}`);
|
70
|
+
ls.push(`${lang.rule}: ${contest.rule}`);
|
71
|
+
ls.push(`${lang.startTime}: ${contest.startTime.toLocaleString(undefined, { hourCycle: "h23" })}`);
|
72
|
+
ls.push(`${lang.endTime}: ${contest.endTime.toLocaleString(undefined, { hourCycle: "h23" })}`);
|
73
|
+
ls.push(contest.url);
|
74
|
+
return ls.join("\n");
|
75
|
+
});
|
76
|
+
}
|
77
|
+
if (running.length) {
|
78
|
+
info.push(lodash_1.default.template(lang.runnning)({
|
79
|
+
contestCount: running.length,
|
80
|
+
oj
|
81
|
+
}));
|
82
|
+
info.push(...msg(running));
|
83
|
+
}
|
84
|
+
else
|
85
|
+
info.push(lodash_1.default.template(lang.norunning)({ oj }));
|
86
|
+
if (upcoming.length) {
|
87
|
+
info.push(lodash_1.default.template(lang.upcoming)({
|
88
|
+
contestCount: upcoming.length,
|
89
|
+
days: cfg.days,
|
90
|
+
oj
|
91
|
+
}));
|
92
|
+
info.push(...msg(upcoming));
|
71
93
|
}
|
94
|
+
else
|
95
|
+
info.push(lodash_1.default.template(lang.noupcoming)({ days: cfg.days, oj }));
|
72
96
|
return pangu_1.default.spacing(info.join("\n\n"));
|
73
97
|
});
|
74
98
|
}
|
75
|
-
exports.
|
99
|
+
exports.getContestsInfoText = getContestsInfoText;
|
76
100
|
var cli_1 = require("./cli");
|
77
101
|
Object.defineProperty(exports, "cli", { enumerable: true, get: function () { return cli_1.cli; } });
|
78
102
|
var oj_2 = require("./lib/oj");
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iCAAiC;AACjC,qCAAuC;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iCAAiC;AACjC,qCAAuC;AAEvC,oDAAuB;AACvB,kDAA0B;AAQ1B,MAAM,aAAa,GAAG;IAClB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,UAAK,CAAC;IAC5B,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,IAAI;CACb,CAAC;AAEF,SAAS,aAAa,CAAC,MAAe;IAElC,MAAM,GAAG,mCAAQ,aAAa,GAAK,MAAM,CAAE,CAAC;IAC5C,IAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC;QAAE,GAAG,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;IACnE,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAsB,WAAW,CAAC,MAAe;;QAE7C,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,SAAe,EAAE,CAAC,EAA2B;;gBAEzC,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CACrB,GAAG,CAAC,QAAQ,CAAC,GAAG,CACZ,CAAM,IAAI,EAAC,EAAE;oBAET,IAAI;wBAAE,OAAO,CAAC,MAAM,UAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;qBAAE;oBACpD,OAAM,CAAC,EACP;wBACI,OAAO,CAAC,KAAK,CAAC,uCAAuC,UAAK,CAAC,IAAI,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC;wBACnF,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACjB,OAAO,EAAE,CAAC;qBACb;gBACL,CAAC,CAAA,CACJ,CACJ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7C,CAAC;SAAA;QACD,MAAM,GAAG,GAAG;YACR,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YAC9E,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;SACpH,CAAC;QACF,IAAG,GAAG,CAAC,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChH,OAAO,GAAG,CAAC;IACf,CAAC;CAAA;AA1BD,kCA0BC;AAED,SAAsB,mBAAmB,CAAC,MAAe,EAAE,QAAQ,GAAG,OAAO;;QAEzE,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,IAAA,oBAAW,EAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QACrD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhE,SAAS,GAAG,CAAC,QAAmB;YAE5B,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;gBAE1B,MAAM,EAAE,GAAa,EAAE,CAAC;gBACxB,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC7C,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBACzC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBACzC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBACnG,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC/F,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACrB,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAG,OAAO,CAAC,MAAM,EACjB;YACI,IAAI,CAAC,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChC,YAAY,EAAE,OAAO,CAAC,MAAM;gBAC5B,EAAE;aACL,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;SAC9B;;YACI,IAAI,CAAC,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACnD,IAAG,QAAQ,CAAC,MAAM,EAClB;YACI,IAAI,CAAC,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChC,YAAY,EAAE,QAAQ,CAAC,MAAM;gBAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,EAAE;aACL,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC/B;;YACI,IAAI,CAAC,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAEpE,OAAO,eAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC;CAAA;AA5CD,kDA4CC;AAED,6BAA4B;AAAnB,0FAAA,GAAG,OAAA;AACZ,+BAAiC;AAAxB,2FAAA,KAAK,OAAA"}
|
@@ -60,7 +60,7 @@ exports.cf = {
|
|
60
60
|
endTime: new Date((res.startTimeSeconds + res.durationSeconds) * 1000),
|
61
61
|
url: `https://codeforces.com/contests/${res.id}`
|
62
62
|
};
|
63
|
-
}).filter(contest => contest.
|
63
|
+
}).filter(contest => contest.endTime >= new Date());
|
64
64
|
})
|
65
65
|
};
|
66
66
|
//# sourceMappingURL=codeforces.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"codeforces.js","sourceRoot":"","sources":["../../../src/lib/oj/codeforces.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAAmC;AAenC,MAAM,UAAU,GAAyB;IACrC,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,MAAM;CACf,CAAC;AAEW,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,GAAS,EAAE;QAEZ,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAC5E,IAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,YAAY,MAAM,CAAC,EACrC;YACI,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SAC7B;QACD,MAAM,OAAO,GAAa,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,EAAE;YAEhC,OAAO;gBACH,MAAM,EAAE,UAAE,CAAC,IAAI;gBACf,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC1B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAChD,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;gBACtE,GAAG,EAAE,mCAAmC,GAAG,CAAC,EAAE,EAAE;aACnD,CAAC;QACN,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,
|
1
|
+
{"version":3,"file":"codeforces.js","sourceRoot":"","sources":["../../../src/lib/oj/codeforces.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAAmC;AAenC,MAAM,UAAU,GAAyB;IACrC,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,MAAM;CACf,CAAC;AAEW,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,GAAS,EAAE;QAEZ,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAC5E,IAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,YAAY,MAAM,CAAC,EACrC;YACI,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SAC7B;QACD,MAAM,OAAO,GAAa,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,EAAE;YAEhC,OAAO;gBACH,MAAM,EAAE,UAAE,CAAC,IAAI;gBACf,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC1B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAChD,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;gBACtE,GAAG,EAAE,mCAAmC,GAAG,CAAC,EAAE,EAAE;aACnD,CAAC;QACN,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC,CAAA;CACJ,CAAC"}
|
package/dist/lib/oj/luogu.js
CHANGED
@@ -38,7 +38,7 @@ exports.lg = {
|
|
38
38
|
endTime: new Date(res.endTime * 1000),
|
39
39
|
url: `https://www.luogu.com.cn/contest/${res.id}`
|
40
40
|
};
|
41
|
-
}).filter(contest => contest.
|
41
|
+
}).filter(contest => contest.endTime >= new Date());
|
42
42
|
})
|
43
43
|
};
|
44
44
|
//# sourceMappingURL=luogu.js.map
|
package/dist/lib/oj/luogu.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"luogu.js","sourceRoot":"","sources":["../../../src/lib/oj/luogu.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAiB1B,MAAM,UAAU,GAAyB;IACrC,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,YAAY;CAClB,CAAC;AAEF,MAAM,OAAO,GAAG;IACZ,YAAY,EAAE,qHAAqH;IACnI,cAAc,EAAE,cAAc;CACjC,CAAC;AAEW,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,OAAO;IACb,GAAG,EAAE,GAAS,EAAE;QAEZ,MAAM,OAAO,GAAa,CAAC,MAAM,eAAK,CAAC,GAAG,CAAC,uCAAuC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnI,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,EAAE;YAEhC,OAAO;gBACH,MAAM,EAAE,UAAE,CAAC,IAAI;gBACf,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAC9B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;gBACzC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;gBACrC,GAAG,EAAE,oCAAoC,GAAG,CAAC,EAAE,EAAE;aACpD,CAAC;QACN,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,
|
1
|
+
{"version":3,"file":"luogu.js","sourceRoot":"","sources":["../../../src/lib/oj/luogu.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAiB1B,MAAM,UAAU,GAAyB;IACrC,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,YAAY;CAClB,CAAC;AAEF,MAAM,OAAO,GAAG;IACZ,YAAY,EAAE,qHAAqH;IACnI,cAAc,EAAE,cAAc;CACjC,CAAC;AAEW,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,OAAO;IACb,GAAG,EAAE,GAAS,EAAE;QAEZ,MAAM,OAAO,GAAa,CAAC,MAAM,eAAK,CAAC,GAAG,CAAC,uCAAuC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnI,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,EAAE;YAEhC,OAAO;gBACH,MAAM,EAAE,UAAE,CAAC,IAAI;gBACf,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAC9B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;gBACzC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;gBACrC,GAAG,EAAE,oCAAoC,GAAG,CAAC,EAAE,EAAE;aACpD,CAAC;QACN,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC,CAAA;CACJ,CAAC"}
|
package/dist/locale/en.json
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
{
|
2
|
-
"
|
2
|
+
"runnning": "There are ${contestCount} contests is running on ${oj}",
|
3
|
+
"norunning": "No upcomming contests on ${oj}",
|
4
|
+
"upcoming": "There are ${contestCount} contests on ${oj} in the next ${days} days",
|
5
|
+
"noupcoming": "No contests for the next ${days} days on ${oj}",
|
3
6
|
"ojName": "OJ",
|
4
7
|
"name": "Contest name",
|
5
8
|
"rule": "Rule",
|
package/dist/locale/index.d.ts
CHANGED
package/dist/locale/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/locale/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2BAAiC;AAEpB,QAAA,QAAQ,GAAG,IAAA,gBAAW,EAAC,GAAG,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/locale/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2BAAiC;AAEpB,QAAA,QAAQ,GAAG,IAAA,gBAAW,EAAC,GAAG,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAclJ,SAAsB,WAAW,CAAC,QAAgB;;QAE9C,IAAG,CAAC,gBAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,+BAA+B,gBAAQ,EAAE,CAAC,CAAC;QACxH,yDAAc,KAAK,QAAQ,OAAO,IAAE;IACxC,CAAC;CAAA;AAJD,kCAIC"}
|
package/dist/locale/zh-CN.json
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
{
|
2
|
-
"
|
2
|
+
"runnning": "在 ${oj} 上有 ${contestCount} 场正在进行的比赛",
|
3
|
+
"norunning": "在 ${oj} 上没有正在进行的比赛捏",
|
4
|
+
"upcoming": "接下来的 ${days} 天内在 ${oj} 上有 ${contestCount} 场比赛",
|
5
|
+
"noupcoming": "接下来的 ${days} 天内在 ${oj} 上没有比赛捏",
|
3
6
|
"ojName": "比赛平台",
|
4
7
|
"name": "比赛名称",
|
5
8
|
"rule": "赛制",
|
@@ -0,0 +1,11 @@
|
|
1
|
+
{
|
2
|
+
"runnning": "搁 ${oj} 上有 ${contestCount} 场比赛正干着呢",
|
3
|
+
"norunning": "这前搁 ${oj} 上没比赛打",
|
4
|
+
"upcoming": "之后 ${days} 天搁在 ${oj} 上拢共 ${contestCount} 场比赛",
|
5
|
+
"noupcoming": "没成想往后 ${days} 天搁 ${oj} 没比赛打啊",
|
6
|
+
"ojName": "搁哪",
|
7
|
+
"name": "叫啥",
|
8
|
+
"rule": "怎么个整法",
|
9
|
+
"startTime": "啥前开始",
|
10
|
+
"endTime": "多前完事"
|
11
|
+
}
|
package/dist/locale/zh-TW.json
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
{
|
2
|
-
"
|
2
|
+
"runnning": "在 ${oj} 上有 ${contestCount} 場正在進行的比賽",
|
3
|
+
"norunning": "在 ${oj} 上沒有正在進行的比賽",
|
4
|
+
"upcoming": "接下来的 ${days} 天內在 ${oj} 上有 ${contestCount} 場比賽",
|
5
|
+
"noupcoming": "接下來的 ${days} 天內在 ${oj} 上沒有比賽",
|
3
6
|
"ojName": "比賽平台",
|
4
7
|
"name": "比賽名稱",
|
5
8
|
"rule": "賽制",
|