feat: add wiki mvp commands (#532)
This commit is contained in:
36
src/services/wiki/utils.ts
Normal file
36
src/services/wiki/utils.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
export function sanitizeWikiSlug(value: string): string {
|
||||
return value
|
||||
.toLowerCase()
|
||||
.replace(/[^a-z0-9]+/g, '-')
|
||||
.replace(/^-+|-+$/g, '')
|
||||
.replace(/-{2,}/g, '-')
|
||||
}
|
||||
|
||||
export function summarizeText(input: string, maxLength = 280): string {
|
||||
const normalized = input.replace(/\s+/g, ' ').trim()
|
||||
if (!normalized) {
|
||||
return 'No summary available.'
|
||||
}
|
||||
|
||||
if (normalized.length <= maxLength) {
|
||||
return normalized
|
||||
}
|
||||
|
||||
return `${normalized.slice(0, maxLength - 1).trimEnd()}…`
|
||||
}
|
||||
|
||||
export function extractTitleFromText(
|
||||
fallbackName: string,
|
||||
content: string,
|
||||
): string {
|
||||
const firstNonEmptyLine = content
|
||||
.split('\n')
|
||||
.map(line => line.trim())
|
||||
.find(Boolean)
|
||||
|
||||
if (!firstNonEmptyLine) {
|
||||
return fallbackName
|
||||
}
|
||||
|
||||
return firstNonEmptyLine.replace(/^#+\s*/, '') || fallbackName
|
||||
}
|
||||
Reference in New Issue
Block a user