program.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. public static class Program
  6. {
  7. private static readonly IReadOnlyDictionary<string, string> Renderers =
  8. new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
  9. {
  10. ["pdf"] = "pdfjs-dist",
  11. ["ofd"] = "DLTech21/ofd.js",
  12. ["typ"] = "typst.ts",
  13. ["dxf"] = "@flyfish-dev/cad-viewer",
  14. ["dwg"] = "@flyfish-dev/cad-viewer",
  15. ["dwf"] = "@flyfish-dev/cad-viewer",
  16. ["dwfx"] = "@flyfish-dev/cad-viewer",
  17. ["xps"] = "@flyfish-dev/cad-viewer",
  18. ["cs"] = "highlight.js",
  19. ["json"] = "highlight.js"
  20. };
  21. public static void Main()
  22. {
  23. var files = new[] { "contract.pdf", "invoice.ofd", "report.typ", "program.cs", "archive.bin" };
  24. var rows = files.Select(CreatePreviewPlan);
  25. foreach (var row in rows)
  26. {
  27. Console.WriteLine($"{row.File,-14} {row.Renderer,-18} async={row.Async}");
  28. }
  29. }
  30. private static PreviewPlan CreatePreviewPlan(string file)
  31. {
  32. var extension = Path.GetExtension(file).TrimStart('.');
  33. var renderer = Renderers.TryGetValue(extension, out var value) ? value : "fallback";
  34. return new PreviewPlan(file, renderer, renderer != "fallback");
  35. }
  36. }
  37. public sealed record PreviewPlan(string File, string Renderer, bool Async);