Skip to content

Commit 84869a9

Browse files
committed
Reduce File IO.
1 parent f88ef4a commit 84869a9

1 file changed

Lines changed: 14 additions & 24 deletions

File tree

converter/generator/DocTransformer.cs

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ internal abstract class DocTransformer
2929

3030
private static Dictionary<string, string> SharedImages => field ??= GetSharedImages();
3131

32-
private readonly Dictionary<string, (long size, ulong hash, string url)> ImagesEn = new(StringComparer.OrdinalIgnoreCase);
32+
private readonly Dictionary<string, (long size, ulong hash, string url)> VisitedImages = new(StringComparer.OrdinalIgnoreCase);
3333

3434
private readonly Dictionary<string, INode[]> LayoutNodes = [];
3535
private readonly Dictionary<string, List<(string file, string? details, TextPosition? position)>> Problems = [];
@@ -391,44 +391,34 @@ protected virtual void TransformImage(IHtmlImageElement img, string sourceFile,
391391
{
392392
img.SetAttribute("loading", "lazy");
393393

394-
var srcImg = Path.GetFullPath(src, sourceDir);
394+
var srcImg = new FileInfo(Path.GetFullPath(src, sourceDir));
395395
var copy = true;
396396

397397
var fileName = Path.GetFileName(src.AsSpan());
398398
if (SharedImages.GetAlternateLookup<ReadOnlySpan<char>>().TryGetValue(fileName, out var url))
399399
{
400400
copy = false;
401401
}
402-
else if (File.Exists(srcImg))
402+
else if (srcImg.Exists)
403403
{
404404
url = $"/{BookUrlName}/{language}/{srcFull.AsSpan("../".Length)}";
405405

406-
if (AvailableLanguages.Length > 1)
406+
if (!VisitedImages.TryGetValue(src, out var visited))
407407
{
408-
if (language == "en")
409-
{
410-
if (!ImagesEn.ContainsKey(src))
411-
{
412-
var size = new FileInfo(srcImg).Length;
413-
var hash = FileHash.UInt64FromFile(srcImg);
408+
var size = srcImg.Length;
409+
var hash = FileHash.UInt64FromFile(srcImg.FullName);
414410

415-
ImagesEn.Add(src, (size, hash, url));
416-
}
417-
else
418-
{
419-
copy = false;
420-
}
421-
}
422-
else if (ImagesEn.TryGetValue(src, out var enImg) && new FileInfo(srcImg).Length == enImg.size && FileHash.UInt64FromFile(srcImg) == enImg.hash)
423-
{
424-
url = enImg.url;
425-
copy = false;
426-
}
411+
VisitedImages.Add(src, (size, hash, url));
412+
}
413+
else if (srcImg.Length == visited.size && FileHash.UInt64FromFile(srcImg.FullName) == visited.hash)
414+
{
415+
url = visited.url;
416+
copy = false;
427417
}
428418
}
429419
else
430420
{
431-
var srcImgEn = $"{SourceFolderEn}{srcImg.AsSpan(SourceFolderEn.Length)}";
421+
var srcImgEn = $"{SourceFolderEn}{srcImg.FullName.AsSpan(SourceFolderEn.Length)}";
432422

433423
if (!File.Exists(srcImgEn))
434424
{
@@ -447,7 +437,7 @@ protected virtual void TransformImage(IHtmlImageElement img, string sourceFile,
447437

448438
Directory.CreateDirectory(Path.GetDirectoryName(dstImg)!);
449439

450-
File.Copy(srcImg, dstImg, overwrite: true);
440+
File.Copy(srcImg.FullName, dstImg, overwrite: true);
451441
}
452442
}
453443
else if (!Uri.IsWellFormedUriString(srcFull, UriKind.Absolute))

0 commit comments

Comments
 (0)