UNPKG

lint-md

Version:

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

50 lines (35 loc) 1.55 kB
"use strict"; 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;