Kleine utility-duplicaten opruimen (byte-readers, path-helpers, _stripCr, _ext, _cm) #2079

Closed
opened 2026-09-13 08:06:25 +00:00 by brenno · 0 comments
Owner

Probleem

Meerdere kleine utility-functies zijn exact gekopieerd across bestanden. Elke duplicaat is klein (3-10 regels), maar samen vormen ze ~40-50 regels kopiecode met onderhoudslast.

Gevonden duplicaten

1. _stripCr (carriage-strip helper)

  • lib/utils/source_patcher.dart:59-60
  • lib/utils/document_front_matter.dart:512-513
  • Regel voor regel identiek.

2. Little-endian byte readers (_readUint16LE, _readUint32LE)

  • lib/utils/zip_encryption.dart:263,265-266
  • lib/utils/image_dimensions.dart:125,128-129
  • Alleen parameternamen verschillen.

3. Big-endian 32-bit reader (_readUint32BE / _uint32)

  • lib/utils/image_dimensions.dart:126-127
  • lib/utils/image_resize.dart:210-214
  • Identiek resultaat, alleen namen verschillen.

4. _safeName / _safeRemoteName

  • lib/services/file/file_service_package.dart:477-478
  • lib/widgets/shell/shell_actions.dart:488-489
  • Identieke body: sanitizeFilename(title, fallback: 'presentatie').

5. _stemOf / stemOfFileName

  • lib/services/import/bulk_import_runner.dart:270-274 (publiek)
  • lib/services/import/presentation_import_service.dart:318-322 (privaat)
  • lib/widgets/shell/presentation_import_action.dart:329-332 (privaat)
  • Drie definities, twee zijn prive-kopieen.

6. _ext (fallback jpg)

  • lib/services/import/importers/keynote/key_importer.dart:302-307
  • lib/services/import/importers/keynote/iwa/media_reconstructor.dart:204-209
  • lib/services/import/importers/keynote/iwa/drawable_reader.dart:613-618
  • Drie identieke prive-kopieen in Keynote-importers.

7. _extFromPath (fallback png)

  • lib/services/import/importers/pptx/pptx_media.dart:227-231
  • lib/services/import/importers/odp/odp_slide.dart:441-445
  • Identieke body.

8. _cm (string naar double, cm/mm/% strip)

  • lib/services/import/importers/odp/odp_slide.dart:435-438
  • lib/services/import/importers/odp/odp_context.dart:134-138
  • Identieke body.

Voorstel

  1. Maak lib/utils/byte_readers.dart met readUint16LE, readUint32LE, readUint32BE (#2, #3)
  2. Maak lib/utils/path_helpers.dart met stemOfFileName, extOfFileName(name, fallback), cmToDouble (#5, #6, #7, #8)
  3. Verplaats _stripCr naar een shared text-utility (#1)
  4. Laat _safeName/_safeRemoteName vervallen door direct sanitizeFilename aan te roepen (#4)

Schatting

~40-50 regels verwijderbaar.

Labels

duplicate, enhancement

## Probleem Meerdere kleine utility-functies zijn exact gekopieerd across bestanden. Elke duplicaat is klein (3-10 regels), maar samen vormen ze ~40-50 regels kopiecode met onderhoudslast. ## Gevonden duplicaten ### 1. `_stripCr` (carriage-strip helper) - `lib/utils/source_patcher.dart:59-60` - `lib/utils/document_front_matter.dart:512-513` - Regel voor regel identiek. ### 2. Little-endian byte readers (`_readUint16LE`, `_readUint32LE`) - `lib/utils/zip_encryption.dart:263,265-266` - `lib/utils/image_dimensions.dart:125,128-129` - Alleen parameternamen verschillen. ### 3. Big-endian 32-bit reader (`_readUint32BE` / `_uint32`) - `lib/utils/image_dimensions.dart:126-127` - `lib/utils/image_resize.dart:210-214` - Identiek resultaat, alleen namen verschillen. ### 4. `_safeName` / `_safeRemoteName` - `lib/services/file/file_service_package.dart:477-478` - `lib/widgets/shell/shell_actions.dart:488-489` - Identieke body: `sanitizeFilename(title, fallback: 'presentatie')`. ### 5. `_stemOf` / `stemOfFileName` - `lib/services/import/bulk_import_runner.dart:270-274` (publiek) - `lib/services/import/presentation_import_service.dart:318-322` (privaat) - `lib/widgets/shell/presentation_import_action.dart:329-332` (privaat) - Drie definities, twee zijn prive-kopieen. ### 6. `_ext` (fallback `jpg`) - `lib/services/import/importers/keynote/key_importer.dart:302-307` - `lib/services/import/importers/keynote/iwa/media_reconstructor.dart:204-209` - `lib/services/import/importers/keynote/iwa/drawable_reader.dart:613-618` - Drie identieke prive-kopieen in Keynote-importers. ### 7. `_extFromPath` (fallback `png`) - `lib/services/import/importers/pptx/pptx_media.dart:227-231` - `lib/services/import/importers/odp/odp_slide.dart:441-445` - Identieke body. ### 8. `_cm` (string naar double, cm/mm/% strip) - `lib/services/import/importers/odp/odp_slide.dart:435-438` - `lib/services/import/importers/odp/odp_context.dart:134-138` - Identieke body. ## Voorstel 1. Maak `lib/utils/byte_readers.dart` met `readUint16LE`, `readUint32LE`, `readUint32BE` (#2, #3) 2. Maak `lib/utils/path_helpers.dart` met `stemOfFileName`, `extOfFileName(name, fallback)`, `cmToDouble` (#5, #6, #7, #8) 3. Verplaats `_stripCr` naar een shared text-utility (#1) 4. Laat `_safeName`/`_safeRemoteName` vervallen door direct `sanitizeFilename` aan te roepen (#4) ## Schatting ~40-50 regels verwijderbaar. ## Labels duplicate, enhancement
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#2079
No description provided.