UNPKG

fortissimo-html

Version:

Fortissimo HTML - Flexible, Forgiving, Formatting HTML Parser

63 lines 2.42 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const commander_1 = __importDefault(require("commander")); const fast_glob_1 = __importDefault(require("fast-glob")); const fs_1 = __importDefault(require("fs")); const iconv_lite_1 = __importDefault(require("iconv-lite")); const html_parser_1 = require("./html-parser"); const logErrorsFlag = true; const logWarningFlag = true; commander_1.default .option('-x, --exclude <exclude>', 'pattern for files/directories to exclude') .arguments('<globs...>') .action(async (globs) => { const options = { ignore: commander_1.default.exclude ? [commander_1.default.exclude] : undefined, }; const files = fast_glob_1.default.sync(globs, options); for (const file of files) await processFile(file); }) .parse(process.argv); async function processFile(file) { let readEncoding = 'utf8'; let tries = 0; let dom; try { while (tries++ < 2 && !dom) { const content = fs_1.default.readFileSync(file, { encoding: readEncoding }); const parser = new html_parser_1.HtmlParser(); dom = parser .on('encoding', (encoding, normalizedEncoding) => { if (readEncoding === normalizedEncoding) return false; logWarnings('*** Attempted encoding %s did not match declared encoding %s', readEncoding, normalizedEncoding); if (!iconv_lite_1.default.encodingExists(normalizedEncoding)) { logErrors('*** Encoding %s is not supported', normalizedEncoding); tries = Number.MAX_SAFE_INTEGER; } readEncoding = normalizedEncoding; return true; }) .on('error', (error, line, col) => { logErrors('*** %s: [%s, %s]', error, line, col); }) .parse(content).domRoot; } } catch (err) { console.error('Error reading file "%s": %s', file, err.toString()); } } function logErrors(...args) { if (logErrorsFlag) console.error(...args); } function logWarnings(...args) { if (logWarningFlag) console.warn(...args); } //# sourceMappingURL=cli.js.map