Skip to content

Commit 88c23d2

Browse files
committed
1.2.1 - Revert CF parser back to my own implementation
1 parent dc8b798 commit 88c23d2

File tree

6 files changed

+56
-19
lines changed

6 files changed

+56
-19
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# 1.2.1 - April 13th, 2018
2+
- Reverted CodeForces parser back to my own implementation
3+
14
# 1.2.0 - April 9th, 2018
25
- Fixed USACO parser
36
- Reverted CodeForces parser back to the CHelper one

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "chelper-companion",
3-
"version": "1.2.0",
3+
"version": "1.2.1",
44
"description": "A webextension which parses competitive programming problems and sends them to CHelper.",
55
"repository": "https://github.com/jmerle/chelper-companion",
66
"author": "Jasper van Merle",

src/parsers/custom/contest/CodeforcesContestParser.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ContestParser } from '../ContestParser';
22
import { Parser } from '../../Parser';
3-
import { CodeforcesProblemParser } from '../../default/problem/CodeforcesProblemParser';
3+
import { CodeforcesProblemParser } from '../problem/CodeforcesProblemParser';
44

55
export class CodeforcesContestParser extends ContestParser {
66
problemParser: Parser = new CodeforcesProblemParser();
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import { Parser } from '../../Parser';
2+
import { Sendable } from '../../../models/Sendable';
3+
import { Test } from '../../../models/Test';
4+
import { CustomTask } from '../../../models/CustomTask';
5+
import { htmlToElement } from '../../../utils';
6+
7+
export class CodeforcesProblemParser extends Parser {
8+
getMatchPatterns(): string[] {
9+
return [
10+
'http://codeforces.com/contest/*/problem/*',
11+
'http://codeforces.com/problemset/problem/*/*',
12+
'http://codeforces.com/gym/*/problem/*',
13+
'http://codeforces.com/group/*/contest/*/problem/*',
14+
];
15+
}
16+
17+
parse(html: string): Promise<Sendable> {
18+
return new Promise(resolve => {
19+
const elem = htmlToElement(html);
20+
21+
let taskName = elem.querySelector('.problem-statement > .header > .title').textContent;
22+
taskName = taskName.replace('.', ' -');
23+
taskName = 'Problem ' + taskName;
24+
25+
const contestName = elem.querySelector('.rtable > tbody > tr > th').textContent;
26+
27+
const memoryLimitStr = elem
28+
.querySelector('.problem-statement > .header > .memory-limit')
29+
.childNodes[1]
30+
.textContent
31+
.split(' ')[0];
32+
const memoryLimit = parseInt(memoryLimitStr);
33+
34+
const tests: Test[] = [];
35+
36+
const inputs = document.querySelectorAll('.input pre');
37+
const outputs = document.querySelectorAll('.output pre');
38+
39+
for (let i = 0; i < inputs.length; i++) {
40+
const input = inputs[i].innerHTML;
41+
const output = outputs[i].innerHTML;
42+
43+
tests.push(new Test(input, output));
44+
}
45+
46+
resolve(new CustomTask(taskName, contestName, tests, memoryLimit));
47+
});
48+
}
49+
}

src/parsers/default/problem/CodeforcesProblemParser.ts

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/parsers/parsers.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import { HackerRankContestParser } from './custom/contest/HackerRankContestParse
2222
import { AtCoderContestParser } from './custom/contest/AtCoderContestParser';
2323
import { CSAcademyProblemParser } from './custom/problem/CSAcademyProblemParser';
2424
import { UsacoTrainingProblemParser } from './custom/problem/UsacoTrainingProblemParser';
25-
import { CodeforcesProblemParser } from './default/problem/CodeforcesProblemParser';
2625
import { NewGoogleCodeJamProblemParser } from './default/problem/NewGoogleCodeJamProblemParser';
2726
import { DevSkillProblemParser } from './custom/problem/DevSkillProblemParser';
2827
import { DevSkillContestParser } from './custom/contest/DevSkillContestParser';
@@ -34,6 +33,7 @@ import { LightOJProblemParser } from './custom/problem/LightOJProblemParser';
3433
import { LightOJContestParser } from './custom/contest/LightOJContestParser';
3534
import { SPOJProblemParser } from './custom/problem/SPOJProblemParser';
3635
import { PandaOnlineJudgeProblemParser } from './custom/problem/PandaOnlineJudgeProblemParser';
36+
import { CodeforcesProblemParser } from './custom/problem/CodeforcesProblemParser';
3737

3838
export const parsers: Parser[] = [
3939
// Default problem parsers
@@ -43,7 +43,6 @@ export const parsers: Parser[] = [
4343
new KattisProblemParser(),
4444
new UsacoProblemParser(),
4545
new YandexProblemParser(),
46-
new CodeforcesProblemParser(),
4746
new NewGoogleCodeJamProblemParser(),
4847

4948
// Default contest parsers
@@ -64,6 +63,7 @@ export const parsers: Parser[] = [
6463
new LightOJProblemParser(),
6564
new SPOJProblemParser(),
6665
new PandaOnlineJudgeProblemParser(),
66+
new CodeforcesProblemParser(),
6767

6868
// Custom contest parsers
6969
new KattisContestParser(),

0 commit comments

Comments
 (0)