diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2026-08-26 22:53:30 -0400 |
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2026-08-28 10:02:05 -0400 |
| commit | a4ef474cabc4113c3dca72bf08bc477c452c624c (patch) | |
| tree | 0252d8156789e55c63dfb0b210d5da52552d766d /src/sisudoc/ocda/abstraction | |
| parent | .ssp digest: add image file's own pixel dimensions (diff) | |
image digest: single read, cache file read & hash
For image digests cache file read & hash, one read per image
file
Fix issue: images referenced from several objects were read and
hashed once per reference.
[as an example in the sisu-manual sm_tux.png accounts for 6 of
the document's image records (12 across the sample set), each
of them a fresh read of the same bytes, and source_pod.d hashes
the file again for digests.txt.]
Memoise on the full path within safeComputeHashAndSize. static is
thread-local in D, so documents processed in parallel each get
their own cache and no synchronisation is involved. Files are not
expected to change during a run.
Output is unchanged: identical .ssp output. (An image that is
missing or unreadable now warns once to stdout rather than once
per reference).
(assisted by Claude-Code)
Diffstat (limited to 'src/sisudoc/ocda/abstraction')
| -rw-r--r-- | src/sisudoc/ocda/abstraction/ssp.d | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/src/sisudoc/ocda/abstraction/ssp.d b/src/sisudoc/ocda/abstraction/ssp.d index 25cc467..1d1ea22 100644 --- a/src/sisudoc/ocda/abstraction/ssp.d +++ b/src/sisudoc/ocda/abstraction/ssp.d @@ -301,7 +301,6 @@ template spineAbstractionTxt() { ~ " missing:true" : ".image: " ~ i.fileName ~ " sha256:" ~ i.fileHash_sha256.toHexString.to!string - ~ " sha256:" ~ i.fileHash_sha256.toHexString.to!string ~ " bytes:" ~ i.fileSize.to!string ~ ((i.imageWidth > 0 && i.imageHeight > 0) ? " px:" ~ i.imageWidth.to!string |
