-
-
Notifications
You must be signed in to change notification settings - Fork 16
/
parsers.ts
42 lines (38 loc) · 1.15 KB
/
parsers.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import {IJSONKifuFormat} from "../Formats";
import * as CSAParser from "./csa-parser.pegjs";
import * as KI2Parser from "./ki2-parser.pegjs";
import * as KIFParser from "./kif-parser.pegjs";
import {normalizeCSA, normalizeKI2, normalizeKIF} from "../normalizer";
/**
* Parse CSA string to JSON Kifu Format
* @param csaString
*/
export function parseCSA(csaString: string): IJSONKifuFormat {
csaString = normalizeNewLines(csaString);
const rawJKF = CSAParser.parse(csaString);
return normalizeCSA(rawJKF);
}
/**
* Parse KIF string to JSON Kifu Format
* @param kifString
*/
export function parseKIF(kifString: string): IJSONKifuFormat {
kifString = normalizeNewLines(kifString);
const rawJKF = KIFParser.parse(kifString);
return normalizeKIF(rawJKF);
}
/**
* Parse KI2 string to JSON Kifu Format
* @param ki2String
*/
export function parseKI2(ki2String: string): IJSONKifuFormat {
ki2String = normalizeNewLines(ki2String);
const rawJKF = KI2Parser.parse(ki2String);
return normalizeKI2(rawJKF);
}
function normalizeNewLines(kifu: string) {
if (kifu.slice(-1) === "\n") {
return kifu;
}
return kifu + "\n";
}