lint-md
Version: 
Core of lint-md which used to lint your markdown file for Chinese.
50 lines (35 loc) • 1.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.lint = void 0;
var _lodash = _interopRequireDefault(require("lodash"));
var _unified = _interopRequireDefault(require("unified"));
var _remarkParse = _interopRequireDefault(require("remark-parse"));
var _astPlugin = require("ast-plugin");
var _lintRules = _interopRequireDefault(require("./lint-rules"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/**
 * 使用 ast 和插件进行 lint
 * @param markdown 字符串
 * @param rulesConfig 配置中的 rule
 * @param containAst error 结果中是否包含 ast,用于 fix
 * @returns {Promise<any>}
 */
var lint = function lint(markdown) {
  var rulesConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  var containAst = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
  // 所有的错误
  var errors = [];
  var throwFunc = function throwFunc(error) {
    errors.push(error);
  };
  var ast = (0, _unified["default"])().use(_remarkParse["default"]).parse(markdown); // 处理 plugin 规则
  // 通过配置的规则,来处理
  new _astPlugin.Ast(ast, undefined, markdown).traverse((0, _lintRules["default"])(throwFunc, rulesConfig));
  var es = _lodash["default"].uniqWith(errors, _lodash["default"].isEqual); // 去重
  return containAst ? es : es.map(function (error) {
    return _lodash["default"].omit(error, ['ast']);
  }); // 去除 ast 键值
};
exports.lint = lint;