Voorgestelde document-exportnaam verwijdert accenten en niet-Latijnse titels #1675
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#1675
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Probleem
De voorgestelde exportbestandsnaam filtert de titel met Dart-regex \w, die hier alleen de ASCII-woordtekens dekt. Accenten en niet-Latijnse schriften verdwijnen: Résumé wordt Rsum en een volledig Chinese/Arabische titel valt terug op document. Dit maakt exports moeilijk herkenbaar en is een internationalisatieprobleem.
Reproductie
Verwacht
Unicode-letters en -cijfers blijven in een bestandssysteemveilige vorm herkenbaar.
Technische aanwijzing
lib/services/document_export_service.dart:suggestedDocumentExportFileName gebruikt RegExp(r'[^\w- ]+').
Gevonden bij audit van commit
d439638c6b.Triage: accepted
Bevestigd tegen
main(e93ef205c).suggestedDocumentExportFileName(lib/services/document_export_service.dart) filtert metRegExp(r'[^\w\- ]+'). Dart's\wis[A-Za-z0-9_]zonderunicode: true; er is geen Unicode-uitbreiding op deze klasse. DusRésumé→Rsum, en een volledig Chinese of Arabische titel wordt leeg en valt terug opdocument.Oplossingsrichting
Draai het filter om: haal weg wat een bestandssysteem echt niet aankan en laat de rest staan, letters en cijfers uit élk schrift inbegrepen.
Weghalen:
/ \ : * ? " < > |, stuurtekens (U+0000–U+001F, U+007F), punten en spaties aan begin en eind, en de gereserveerde Windows-namen (CON,PRN,AUX,NUL,COM1–COM9,LPT1–LPT9, ook met extensie). Waar een tekenklasse nodig is:RegExp(…, unicode: true)met\p{L}\p{N}.Doe dit samen met #1677 — dat is dezelfde functie, en twee losse wijzigingen aan één functie is werk voor niets.
Kijk meteen of de deck-kant een tweede kopie van dezelfde naamsuggestie heeft. Zo ja: één gedeelde helper, dit is het moment.
Regressietest (verplicht)
Unittest op de functie:
Résumé→Résumé-volledig.md,中文blijft中文,العربيةblijft staan,a/b:cverliest alleen de scheidingstekens,CONwordt iets anders danCON.Kosten
Klein: één functie, één testbestand. Geen l10n.
Prioriteit
Middel. Wij leveren een interface in 32 talen; een exportnaam die alleen ASCII overleeft, spreekt dat tegen.