Add `onProgress` for msl parsing (#840)

This commit is contained in:
Piotr Rogowski 2022-10-24 23:55:29 +02:00 committed by GitHub
parent 12f78e2459
commit 91e793dbec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 5 deletions

View File

@ -1,5 +1,5 @@
export interface ParserInterface {
parse(): this;
parse(onProgress: (percent: number) => void): this;
}
export interface ParserConstructor {

View File

@ -22,12 +22,15 @@ class MslLogParser implements ParserInterface {
this.raw = (new TextDecoder()).decode(buffer);
}
public parse(): this {
public parse(onProgress: (percent: number) => void): this {
let unitsIndex = 999;
const lines = this.raw.trim().split('\n');
for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
const line = lines[lineIndex].trim();
for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
// eslint-disable-next-line no-bitwise
onProgress(~~(lineIndex / lines.length * 100));
const line = lines[lineIndex].trim();
if (line.startsWith('"')) {
this.result.info += `${line.replaceAll('"', '').trim()}\n`;

View File

@ -19,7 +19,15 @@ export interface WorkerOutput {
// eslint-disable-next-line no-bitwise
const elapsed = (t0: number): number => ~~(performance.now() - t0);
const parseMsl = (raw: ArrayBufferLike, t0: number): Result => new MslLogParser(raw).parse().getResult();
const parseMsl = (raw: ArrayBufferLike, t0: number): Result => new MslLogParser(raw)
.parse((progress) => {
ctx.postMessage({
type: 'progress',
progress,
elapsed: elapsed(t0),
} as WorkerOutput);
})
.getResult();
const parseMlg = (raw: ArrayBufferLike, t0: number): Result => new Parser(raw).parse((progress) => {
ctx.postMessage({