Add `onProgress` for msl parsing (#840)
This commit is contained in:
parent
12f78e2459
commit
91e793dbec
|
@ -1,5 +1,5 @@
|
|||
export interface ParserInterface {
|
||||
parse(): this;
|
||||
parse(onProgress: (percent: number) => void): this;
|
||||
}
|
||||
|
||||
export interface ParserConstructor {
|
||||
|
|
|
@ -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`;
|
||||
|
||||
|
|
|
@ -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({
|
||||
|
|
Loading…
Reference in New Issue