(formatter: MetaDataFormatter, metadata: Metadata)
| 66 | * @returns |
| 67 | */ |
| 68 | export function createUserScriptMetadata(formatter: MetaDataFormatter, metadata: Metadata) { |
| 69 | const contents = []; |
| 70 | // 最长字段 |
| 71 | const maxLength = Object.keys(metadata).reduce<number>((pre, cur) => Math.max(cur.length, pre), 0); |
| 72 | |
| 73 | const lineBuilder = (key: string, value: string) => |
| 74 | [formatter.symbol, key.padEnd(maxLength, ' '), formatter.gap, value || ''].join(''); |
| 75 | |
| 76 | for (const key in metadata) { |
| 77 | if (Object.prototype.hasOwnProperty.call(metadata, key)) { |
| 78 | const element = metadata[key]; |
| 79 | if (Array.isArray(element)) { |
| 80 | contents.push(...element.map((el) => lineBuilder(key, el))); |
| 81 | } else { |
| 82 | contents.push(lineBuilder(key, element)); |
| 83 | } |
| 84 | } |
| 85 | } |
| 86 | return [formatter.header, ...contents, formatter.footer].map((line) => formatter.prefix + line).join('\n'); |
| 87 | } |
| 88 | |
| 89 | /** |
| 90 | * 解析脚本头部信息 |
no test coverage detected