import { isPlainObject } from 'lodash-es';
import { coreName, coreRealName } from './utils';
export type ComponentMeta = {
name: string;
realName?: string;
title: string;
fullTitle?: string;
category: string;
parts: string[];
status?: string;
dir?: string;
};
export function isValidComponentMeta(obj: any) {
return isPlainObject(obj) && !!obj.name && Array.isArray(obj.parts);
}
export function genMetaObj(meta: Partial<ComponentMeta> = {}) {
return {
$name: '组件英文名称',
name: coreName(meta.name ?? ''),
$realName: '组件 name 属性',
realName: meta.realName ?? coreRealName(meta.name ?? ''),
$title: '组件中文名称',
title: meta.title ?? '',
$fullTitle: '完整的组件标题,用于文档组件列表树使用',
fullTitle: meta.fullTitle ?? `${coreName(meta.name ?? '')} ${meta.title ?? ''}`,
$category: '组件分类',
category: meta.category ?? '',
$parts: '零部件集合',
parts: meta.parts ?? [],
$status: '组件开发进度:可设置百分比进度(10%、80%)或文字状态(待开发、开发中、已完成)',
status: meta.status ?? '0%',
$dir: '组件目录',
dir: meta.dir ?? ''
};
}
export default function genMetaTemplate(meta: Partial<ComponentMeta> = {}) {
return JSON.stringify(genMetaObj(meta), null, 2);
}