thenavisapp
Version:
This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
30 lines (24 loc) • 1.1 kB
text/typescript
import type { ParserOptions, TreeAdapterTypeMap } from 'parse5';
import { ParserStream } from '../../lib/index.js';
import { makeChunks } from 'parse5-test-utils/utils/common.js';
export function parseChunked<T extends TreeAdapterTypeMap>(
test: { input: string; fragmentContext?: T['parentNode'] },
opts: ParserOptions<T>,
minChunkSize?: number,
maxChunkSize?: number,
): { node: TreeAdapterTypeMap['document']; chunks: string[] } {
const parserStream = test.fragmentContext
? ParserStream.getFragmentStream(test.fragmentContext, opts)
: new ParserStream(opts);
const chunks = makeChunks(test.input, minChunkSize, maxChunkSize);
// NOTE: set small waterline for testing purposes
parserStream.parser.tokenizer.preprocessor.bufferWaterline = 8;
for (let i = 0; i < chunks.length - 1; i++) {
parserStream.write(chunks[i]);
}
parserStream.end(chunks[chunks.length - 1]);
return {
node: test.fragmentContext ? parserStream.getFragment() : parserStream.document,
chunks,
};
}