@canboat/canboatjs
Version:
Native javascript version of canboat
107 lines (106 loc) • 3.41 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const fromPgn_1 = require("../fromPgn");
const minimist_1 = __importDefault(require("minimist"));
const readline_1 = __importDefault(require("readline"));
const utils_1 = require("./utils");
const argv = (0, minimist_1.default)(process.argv.slice(2), {
alias: { h: 'help' },
string: ['pgn', 'manufacturer'],
boolean: [
'n',
'r',
'camel',
'camel-compat',
'show-non-matches',
//'show-create-pgns',
'pretty',
'show-warnings',
'coalesced'
]
});
(0, utils_1.printVersion)(argv);
if (argv['help']) {
console.error(`Usage: ${process.argv[1]} [options]
Options:
-c don't check for invalid values
-n output null values
-r parse $MXPGN as little endian
--pretty pretty json
--camel output field names in camelCase
--camel-compat output field names in camelCase and regular
--show-non-matches show pgn data without any matches
--show-warnings show warning messages
--coalesced force coalesced format
--fast force fast format
--pgn <number> filter for the given pgn number
--manufacturer <str> filter for pgns from the given manufacturer
-h, --help output usage information`);
process.exit(1);
}
let format = undefined;
if (argv['coalesced']) {
format = 1;
}
else if (argv['fast']) {
format = 0;
}
let pgn_filter = argv['pgn'];
const manufacturer_filter = argv['manufacturer'];
if (pgn_filter !== undefined && Array.isArray(pgn_filter) === false) {
pgn_filter = [pgn_filter];
}
const parser = new fromPgn_1.Parser({
returnNulls: argv['n'] === true,
littleEndianMXPGN: argv['r'] === true,
checkForInvalidFields: argv['c'] !== true,
useCamel: argv['camel'],
useCamelCompat: argv['camel-compat'],
returnNonMatches: argv['show-non-matches'],
format
});
parser.on('error', (pgn, error) => {
console.error(`Error parsing ${pgn.pgn} ${error}`);
console.error(error.stack);
});
parser.on('warning', (pgn, error) => {
if (argv['show-warnings']) {
console.error(`Warning parsing ${pgn.pgn} ${error}`);
}
});
const rl = readline_1.default.createInterface({
input: process.stdin,
output: process.stdout,
terminal: false
});
rl.on('line', (line) => {
if (argv['log-input']) {
console.log(line);
}
let pgn;
if (line.length > 13 && line.charAt(13) === ';') {
if (line.charAt(14) === 'A') {
pgn = parser.parseString(line.substring(16));
}
}
else {
pgn = parser.parseString(line.trim());
}
if (pgn &&
(pgn_filter === undefined ||
pgn_filter.find((p) => pgn.pgn === Number(p)))) {
if (manufacturer_filter !== undefined) {
const manufacturer = pgn.fields.manufacturerCode ||
pgn.fields['Manufacturer Code'];
if (manufacturer !== manufacturer_filter) {
return;
}
}
console.log(JSON.stringify(pgn, null, argv['pretty'] ? 2 : 0));
}
});
//# sourceMappingURL=analyzerjs.js.map