UNPKG

lint-md

Version:

Core of lint-md which used to lint your markdown file for Chinese.

75 lines (54 loc) 3.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _lodash = _interopRequireDefault(require("lodash")); var _rule = require("./helper/rule"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } var PluginClasses = [require('./space-round-alphabet'), require('./space-round-number'), require('./no-empty-code-lang'), require('./no-empty-delete'), require('./no-empty-url'), require('./no-empty-list'), require('./no-empty-code'), require('./no-empty-inlinecode'), require('./no-empty-blockquote'), require('./no-special-characters'), require('./use-standard-ellipsis'), require('./no-fullwidth-number'), require('./no-space-in-emphasis'), require('./no-space-in-link'), require('./no-multiple-space-blockquote'), require('./no-space-in-inlinecode'), require('./no-trailing-punctuation'), require('./no-long-code')]; /** * 所有的 lint 规则,欢迎 pr 添加 * @param throwError * @param rules * @returns {*[]} */ var _default = function _default(throwError, rules) { // 所有的插件的默认 rules var rulesConfig = {}; _lodash["default"].forEach(PluginClasses, function (Plugin) { rulesConfig[Plugin.type] = { level: 2 // 默认都是 error }; }); // 用 rules 覆盖初始配置 Object.keys(rules).forEach(function (rule) { var _concat = [].concat(rules[rule]), _concat2 = _slicedToArray(_concat, 2), level = _concat2[0], config = _concat2[1]; rulesConfig[rule] = { level: level, config: config }; }); // 配置为 0 的就是关闭,不启用插件! var Plugins = _lodash["default"].filter(PluginClasses, function (Plugin) { return rulesConfig[Plugin.type].level !== 0; }); // 初始化插件 return _lodash["default"].map(Plugins, function (Plugin) { var level = (0, _rule.ruleToLevel)(rulesConfig[Plugin.type].level); // 重新包装一下 throw 方法,加入 level var throwErrorFunc = function throwErrorFunc(error) { error.level = level; error.type = Plugin.type; throwError(error); }; return new Plugin({ throwError: throwErrorFunc, config: rulesConfig[Plugin.type].config }); }); }; exports["default"] = _default;