Bruno Charest 18ee8a1cfd feat: Add report generation module for tracking metadata changes
- Implemented `report.nim` to create structured reports on metadata modifications.
- Added functionality to merge reports and convert them to formatted strings.

docs: Create prompt documentation for Markdown parser project

- Added `prompt.md` detailing the requirements and functionalities for the Markdown parser.
- Included specifications, usage examples, and testing guidelines.

docs: Generate code review report for Markdown parser

- Created `rapport_revue_code.md` outlining security vulnerabilities, code quality issues, and suggested improvements.
- Provided a detailed analysis of the codebase with actionable recommendations.

test: Add test data for Markdown parser

- Included various Markdown files and a JPG image in `test_data` to simulate different scenarios.
- Ensured that the parser can handle both valid and invalid metadata.

chore: Add version management file

- Created `version.nim` for automatic versioning of the Markdown parser.
- Established constants for major, minor, patch, and build versions.
2026-04-19 12:56:55 -04:00

70 lines
2.2 KiB
Nim

# report.nim
# Module responsable de la génération des rapports sur les modifications effectuées
import std/[strformat, strutils]
type
FileReport* = object
sourcePath*: string
targetPath*: string
status*: string
success*: bool
Report* = object
newMetadata*: seq[string] # Fichiers où des métadonnées ont été ajoutées
updatedMetadata*: seq[string] # Fichiers où des métadonnées ont été mises à jour
unchanged*: seq[string] # Fichiers inchangés
errors*: seq[string] # Erreurs rencontrées
fileReports*: seq[FileReport] # Rapports de fichiers individuels
proc newReport*(): Report =
## Crée un nouveau rapport vide
result = Report(
newMetadata: @[],
updatedMetadata: @[],
unchanged: @[],
errors: @[],
fileReports: @[]
)
proc merge*(self: var Report, other: Report) =
## Fusionne deux rapports
self.newMetadata.add(other.newMetadata)
self.updatedMetadata.add(other.updatedMetadata)
self.unchanged.add(other.unchanged)
self.errors.add(other.errors)
self.fileReports.add(other.fileReports)
proc toString*(report: Report): string =
## Convertit le rapport en chaîne de caractères formatée
let totalProcessed = report.newMetadata.len + report.updatedMetadata.len + report.unchanged.len
var lines: seq[string] = @[]
lines.add("=== Résumé du traitement ===")
lines.add(fmt"Total des fichiers traités: {totalProcessed}")
lines.add(fmt"Métadonnées ajoutées: {report.newMetadata.len}")
lines.add(fmt"Métadonnées mises à jour: {report.updatedMetadata.len}")
lines.add(fmt"Fichiers inchangés: {report.unchanged.len}")
lines.add(fmt"Erreurs: {report.errors.len}")
if report.newMetadata.len > 0:
lines.add("")
lines.add("=== Fichiers avec métadonnées ajoutées ===")
for file in report.newMetadata:
lines.add(fmt"- {file}")
if report.updatedMetadata.len > 0:
lines.add("")
lines.add("=== Fichiers avec métadonnées mises à jour ===")
for file in report.updatedMetadata:
lines.add(fmt"- {file}")
if report.errors.len > 0:
lines.add("")
lines.add("=== Erreurs ===")
for error in report.errors:
lines.add(fmt"- {error}")
return lines.join("\n")