- 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.
70 lines
2.2 KiB
Nim
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")
|