Add `onProgress` for msl parsing (#840)
This commit is contained in:
parent
12f78e2459
commit
91e793dbec
|
@ -1,5 +1,5 @@
|
||||||
export interface ParserInterface {
|
export interface ParserInterface {
|
||||||
parse(): this;
|
parse(onProgress: (percent: number) => void): this;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ParserConstructor {
|
export interface ParserConstructor {
|
||||||
|
|
|
@ -22,12 +22,15 @@ class MslLogParser implements ParserInterface {
|
||||||
this.raw = (new TextDecoder()).decode(buffer);
|
this.raw = (new TextDecoder()).decode(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public parse(): this {
|
public parse(onProgress: (percent: number) => void): this {
|
||||||
let unitsIndex = 999;
|
let unitsIndex = 999;
|
||||||
const lines = this.raw.trim().split('\n');
|
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('"')) {
|
if (line.startsWith('"')) {
|
||||||
this.result.info += `${line.replaceAll('"', '').trim()}\n`;
|
this.result.info += `${line.replaceAll('"', '').trim()}\n`;
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,15 @@ export interface WorkerOutput {
|
||||||
// eslint-disable-next-line no-bitwise
|
// eslint-disable-next-line no-bitwise
|
||||||
const elapsed = (t0: number): number => ~~(performance.now() - t0);
|
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) => {
|
const parseMlg = (raw: ArrayBufferLike, t0: number): Result => new Parser(raw).parse((progress) => {
|
||||||
ctx.postMessage({
|
ctx.postMessage({
|
||||||
|
|
Loading…
Reference in New Issue