@xwordly/xword-parser
Version:
Fast, type-safe TypeScript library for parsing crossword puzzles (PUZ, iPUZ, JPZ, XD)
70 lines (67 loc) • 2.54 kB
JavaScript
;
var chunkTFE3E6Z3_js = require('./chunk-TFE3E6Z3.js');
var chunkKVCCVFYY_js = require('./chunk-KVCCVFYY.js');
// src/lazy.ts
async function parseLazy(data, options) {
let content;
if (data instanceof ArrayBuffer) {
content = Buffer.from(data);
} else {
content = data;
}
const formatsToTry = chunkTFE3E6Z3_js.getOrderedFormatsToTry(content, options?.filename);
let lastError;
for (const format of formatsToTry) {
try {
switch (format) {
case "ipuz": {
const textContent = typeof content === "string" ? content : content.toString(options?.encoding || "utf-8");
const { parseIpuz, convertIpuzToUnified } = await import('./ipuz-DVQDQRFQ.js');
const puzzle = parseIpuz(textContent, options);
return convertIpuzToUnified(puzzle);
}
case "puz": {
if (typeof content !== "string") {
const { parsePuz, convertPuzToUnified } = await import('./puz-FYMW4DTC.js');
const puzzle = parsePuz(content, options);
return convertPuzToUnified(puzzle);
}
break;
}
case "jpz": {
const textContent = typeof content === "string" ? content : content.toString(options?.encoding || "utf-8");
const { parseJpz, convertJpzToUnified } = await import('./jpz-VDLGZ7QA.js');
const puzzle = parseJpz(textContent, options);
return convertJpzToUnified(puzzle);
}
case "xd": {
const textContent = typeof content === "string" ? content : content.toString(options?.encoding || "utf-8");
const { parseXd, convertXdToUnified } = await import('./xd-DXPPDFX2.js');
const puzzle = parseXd(textContent, options);
return convertXdToUnified(puzzle);
}
}
} catch (e) {
lastError = e;
if (e instanceof chunkKVCCVFYY_js.ParseError && !e.isFormatMismatch()) {
throw e;
}
}
}
if (lastError && !(lastError instanceof chunkKVCCVFYY_js.ParseError && lastError.isFormatMismatch())) {
if (lastError instanceof Error) {
throw lastError;
}
throw new chunkKVCCVFYY_js.FormatDetectionError(
"Unable to detect puzzle format. Supported formats: iPUZ, PUZ, JPZ, XD",
void 0,
lastError
);
}
throw new chunkKVCCVFYY_js.FormatDetectionError(
"Unable to detect puzzle format. Supported formats: iPUZ, PUZ, JPZ, XD"
);
}
exports.parseLazy = parseLazy;
//# sourceMappingURL=lazy.js.map
//# sourceMappingURL=lazy.js.map