25 lines
668 B
TypeScript
25 lines
668 B
TypeScript
|
|
import type { FileComments } from "../types"
|
||
|
|
|
||
|
|
function escapeXml(text: string): string {
|
||
|
|
return text
|
||
|
|
.replace(/&/g, "&")
|
||
|
|
.replace(/</g, "<")
|
||
|
|
.replace(/>/g, ">")
|
||
|
|
.replace(/"/g, """)
|
||
|
|
.replace(/'/g, "'")
|
||
|
|
}
|
||
|
|
|
||
|
|
export function buildCommentsXml(fileCommentsList: FileComments[]): string {
|
||
|
|
const lines: string[] = []
|
||
|
|
|
||
|
|
for (const fc of fileCommentsList) {
|
||
|
|
lines.push(`<comments file="${escapeXml(fc.filePath)}">`)
|
||
|
|
for (const comment of fc.comments) {
|
||
|
|
lines.push(`\t<comment line-number="${comment.lineNumber}">${escapeXml(comment.text)}</comment>`)
|
||
|
|
}
|
||
|
|
lines.push(`</comments>`)
|
||
|
|
}
|
||
|
|
|
||
|
|
return lines.join("\n")
|
||
|
|
}
|