markdown-spellcheck
Version:
Spell-checks markdown files with an interactive CLI allowing automated spell checking.
98 lines (70 loc) • 3.67 kB
JavaScript
'use strict';
var _commander = require('commander');
var _commander2 = _interopRequireDefault(_commander);
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _cliInteractive = require('./cli-interactive');
var _cliInteractive2 = _interopRequireDefault(_cliInteractive);
var _index = require('./index');
var _index2 = _interopRequireDefault(_index);
var _chalk = require('chalk');
var _chalk2 = _interopRequireDefault(_chalk);
var _multiFileProcessor = require('./multi-file-processor');
var _multiFileProcessor2 = _interopRequireDefault(_multiFileProcessor);
var _relativeFileProcessor = require('./relative-file-processor');
var _relativeFileProcessor2 = _interopRequireDefault(_relativeFileProcessor);
var _spellcheck = require('./spellcheck');
var _spellcheck2 = _interopRequireDefault(_spellcheck);
var _reportGenerator = require('./report-generator');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var packageConfig = _fs2.default.readFileSync(_path2.default.join(__dirname, '../package.json'));
var buildVersion = JSON.parse(packageConfig).version;
_commander2.default.version(buildVersion)
// default cli behaviour will be an interactive walkthrough each error, with suggestions,
// options to replace etc.
.option('-r, --report', 'Outputs a full report which details the unique spelling errors found.').option('-n, --ignore-numbers', 'Ignores numbers.').option('--en-us', 'American English dictionary.').option('--en-gb', 'British English dictionary.').option('--en-au', 'Australian English dictionary.').option('--es-es', 'Spanish dictionary.').option('-d, --dictionary [file]', 'specify a custom dictionary file - it should not include the file extension and will load .dic and .aiff.').option('-a, --ignore-acronyms', 'Ignores acronyms.').option('-x, --no-suggestions', 'Do not suggest words (can be slow)').option('-t, --target-relative', 'Uses ".spelling" files relative to the target.').usage("[options] source-file source-file").parse(process.argv);
var language = void 0;
if (_commander2.default.enUs) {
language = "en-us";
} else if (_commander2.default.enGb) {
language = "en-gb";
} else if (_commander2.default.enAu) {
language = "en-au";
} else if (_commander2.default.esEs) {
language = "es-es";
}
var options = {
ignoreAcronyms: _commander2.default.ignoreAcronyms,
ignoreNumbers: _commander2.default.ignoreNumbers,
suggestions: _commander2.default.suggestions,
relativeSpellingFiles: _commander2.default.targetRelative,
dictionary: {
language: language,
file: _commander2.default.dictionary
}
};
if (!_commander2.default.args.length) {
_commander2.default.outputHelp();
process.exit();
} else {
_spellcheck2.default.initialise(options);
var inputPatterns = _commander2.default.args;
var processor = options.relativeSpellingFiles ? _relativeFileProcessor2.default : _multiFileProcessor2.default;
processor(inputPatterns, options, function (filename, src, fileProcessed) {
if (_commander2.default.report) {
var errors = _index2.default.spell(src, options);
if (errors.length > 0) {
console.log((0, _reportGenerator.generateFileReport)(filename, { errors: errors, src: src }));
process.exitCode = 1;
}
fileProcessed(null, errors);
} else {
console.log("Spelling - " + _chalk2.default.bold(filename));
(0, _cliInteractive2.default)(filename, src, options, fileProcessed);
}
}, function (e, results) {
console.log((0, _reportGenerator.generateSummaryReport)(results));
});
}