-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfilereaderhelper.ts
40 lines (37 loc) · 1.43 KB
/
filereaderhelper.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
export class FileReaderHelper {
public static readBlobAsText(file: Blob, encoding: string = 'iso8859-1'): Promise<string[]> {
const fr: FileReader = new FileReader();
fr.readAsText(file, encoding);
return new Promise(
(resolve, reject) => {
fr.onerror = (event: FileReaderProgressEvent) => {
reject(event.target.error);
}
fr.onload = () => {
resolve(fr.result);
}
}
);
}
public static readBlobAsTextFiltered(file: Blob, encoding: string = 'iso8859-1', regex: RegExp, split_pattern: RegExp = /\r\n|\n/, clue_string: string = '\r\n'): Promise<string[]> {
const fr: FileReader = new FileReader();
fr.readAsText(file, encoding);
return new Promise(
(resolve, reject) => {
fr.onerror = (event: FileReaderProgressEvent) => {
reject(event.target.error);
}
fr.onload = () => {
const lines = [];
const allLines: string[] = fr.result.split(split_pattern);
allLines.forEach((line: string) => {
if (regex.test(line)) {
lines.push(line + clue_string);
}
});
resolve(lines);
}
}
);
}
}