(raw: string, range: [number, number])
| 949 | } |
| 950 | |
| 951 | function parseLooseJSDocBlock(raw: string, range: [number, number]): JSDocBlock { |
| 952 | const body = raw.replace(/^\/\*\*/, "").replace(/\*\/$/, "") |
| 953 | const rawLines = body.split(/\r\n|\r|\n/) |
| 954 | const lines = rawLines.map((line) => line.replace(/^\s*\* ?/, "").trimEnd()) |
| 955 | const normalized = trimStructuralBlankLines(lines) |
| 956 | const tags = parseTags(normalized) |
| 957 | const internal = tags.some((tag) => tag.name === "internal") |
| 958 | return { range, raw, lines: normalized, tags, diagnostics: [], internal } |
| 959 | } |
| 960 | |
| 961 | function parseJSDocBlock(raw: string, range: [number, number]): JSDocBlock { |
| 962 | const base = parseLooseJSDocBlock(raw, range) |
no test coverage detected