t-comm
Version:
专业、稳定、纯粹的工具库
50 lines (47 loc) • 1.41 kB
JavaScript
import { writeFileSync, readFileSync } from '../fs/fs.js';
import 'fs';
var DEFAULT_EXTRACT_REGEXP = /\$emit\('([\w]+)'/g;
function getEventList(filePath, extractRegexp) {
var data = readFileSync(filePath);
var eventList = [];
var match = extractRegexp.exec(data);
while (match) {
eventList.push({
name: match[1]
});
match = extractRegexp.exec(data);
}
return eventList;
}
function genTable(list) {
var table = ['| 事件名 | 说明 | 参数 |', '| ------------------ | ---------------- | --------- |'];
list.forEach(function (item) {
var name = item.name;
table.push("| ".concat(name, " | |- |"));
});
return table.join('\n');
}
/**
* 提取 Vue 组件的 event
* @param {obj} params 参数
* @param {string} params.filePath 源文件地址
* @param {string} [params.targetFilePath] 输出文件地址
* @param {Regexp} [params.extractRegexp] 提取正则
*
* ```ts
* extractEvent({
* filePath: 'xxx.vue',
* })
* ```
*/
function extractEvent(_a) {
var filePath = _a.filePath,
_b = _a.targetFilePath,
targetFilePath = _b === void 0 ? './log/extract-event.md' : _b,
_c = _a.extractRegexp,
extractRegexp = _c === void 0 ? DEFAULT_EXTRACT_REGEXP : _c;
var eventList = getEventList(filePath, extractRegexp);
var table = genTable(eventList);
writeFileSync(targetFilePath, table);
}
export { extractEvent };