vue-docgen-cli
Version:
Generate documentation markdown files from VueJs components using the vue-docgen-api.
39 lines (34 loc) • 1.12 kB
text/typescript
import type { EventDescriptor } from 'vue-docgen-api'
import { mdclean } from './utils'
import { SubTemplateOptions } from '../compileTemplates'
function formatProperties(properties: EventDescriptor['properties']): string {
if (!properties) {
return ''
}
return properties
.map(property => {
const { name, description, type } = property
if (!type) {
return ''
}
return `**${name}** \`${type.names.length ? type.names.join(', ') : ''}\` - ${description}`
})
.join('\n')
}
const tmpl = (events: EventDescriptor[]) => {
let ret = ''
events.forEach(evt => {
const { description = '', ...e } = evt
const readableProperties = e.properties ? `${formatProperties(e.properties)}` : ''
ret += `| ${mdclean(e.name)} | ${mdclean(readableProperties)} | ${mdclean(description)}\n`
})
return ret
}
export default (events: EventDescriptor[], opt: SubTemplateOptions = {}): string => {
return `
${opt.isSubComponent || opt.hasSubComponents ? '#' : ''}## Events
| Event name | Properties | Description |
| -------------- |--------------- | -------------|
${tmpl(events)}
`
}