refactor: reduce complexity in parsing.rs and noteListHelpers.ts (gate: 9.31 → 9.33)

Refactored two files to improve code health:

1. src-tauri/src/vault/parsing.rs (7.9 → 8.54, +0.64)
   - Extracted helper functions to reduce nesting in strip_markdown_chars
     (process_wikilink, extract_wikilink_display, process_markdown_link)
   - Refactored strip_list_marker to eliminate bumpy road pattern
     (strip_unordered_marker, strip_ordered_marker)

2. src/utils/noteListHelpers.ts (9.28 → 10.0, +0.72)
   - Reduced cyclomatic complexity in isInboxEntry from 15 to ~4
     (hasAnyValidLinks, hasValidBodyLinks, hasValidFrontmatterLinks)
   - Extracted complex conditional into wasCreatedBeforeLastModification

Gate threshold raised: 9.31 → 9.33 (conservative, pending CodeScene re-analysis)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
lucaronin
2026-03-27 07:10:06 +01:00
parent 98debe15f1
commit 71f6f4cc5d
5 changed files with 364 additions and 42 deletions

View File

@@ -43,12 +43,16 @@ export function formatSubtitle(entry: VaultEntry): string {
return parts.join(' \u00b7 ')
}
function wasCreatedBeforeLastModification(entry: VaultEntry): boolean {
return !!(entry.createdAt && entry.modifiedAt && entry.createdAt !== entry.modifiedAt)
}
export function formatSearchSubtitle(entry: VaultEntry): string {
const parts: string[] = []
const modified = entry.modifiedAt ?? entry.createdAt
if (modified) parts.push(relativeDate(modified))
if (entry.createdAt && entry.modifiedAt && entry.createdAt !== entry.modifiedAt) {
parts.push(`Created ${relativeDate(entry.createdAt)}`)
if (wasCreatedBeforeLastModification(entry)) {
parts.push(`Created ${relativeDate(entry.createdAt!)}`)
}
if (entry.wordCount > 0) {
parts.push(`${entry.wordCount.toLocaleString()} words`)
@@ -391,20 +395,26 @@ function hasValidRef(refs: string[], validTargets: Set<string>): boolean {
export function isInboxEntry(entry: VaultEntry, validTargets: Set<string>): boolean {
if (entry.trashed || entry.archived) return false
if (entry.isA === 'Type') return false
return !hasAnyValidLinks(entry, validTargets)
}
// Check body outgoing links
if (entry.outgoingLinks.some((link) => validTargets.has(link) || validTargets.has(link.split('/').pop() ?? ''))) return false
function hasAnyValidLinks(entry: VaultEntry, validTargets: Set<string>): boolean {
return hasValidBodyLinks(entry.outgoingLinks, validTargets) || hasValidFrontmatterLinks(entry, validTargets)
}
function hasValidBodyLinks(outgoingLinks: string[], validTargets: Set<string>): boolean {
return outgoingLinks.some((link) => validTargets.has(link) || validTargets.has(link.split('/').pop() ?? ''))
}
function hasValidFrontmatterLinks(entry: VaultEntry, validTargets: Set<string>): boolean {
if (entry.belongsTo?.length && hasValidRef(entry.belongsTo, validTargets)) return true
if (entry.relatedTo?.length && hasValidRef(entry.relatedTo, validTargets)) return true
// Check frontmatter relationship refs
if (entry.belongsTo?.length && hasValidRef(entry.belongsTo, validTargets)) return false
if (entry.relatedTo?.length && hasValidRef(entry.relatedTo, validTargets)) return false
if (entry.relationships) {
for (const refs of Object.values(entry.relationships)) {
if (hasValidRef(refs, validTargets)) return false
}
return Object.values(entry.relationships).some((refs) => hasValidRef(refs, validTargets))
}
return true
return false
}
const INBOX_PERIOD_DAYS: Record<InboxPeriod, number> = {