script.bash 839 B

123456789101112131415161718192021222324252627282930313233343536
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. declare -A RENDERERS=(
  4. [pdf]="pdfjs-dist"
  5. [ofd]="DLTech21/ofd.js"
  6. [dxf]="@flyfish-dev/cad-viewer"
  7. [dwg]="@flyfish-dev/cad-viewer"
  8. [dwf]="@flyfish-dev/cad-viewer"
  9. [dwfx]="@flyfish-dev/cad-viewer"
  10. [xps]="@flyfish-dev/cad-viewer"
  11. [ts]="highlight.js"
  12. [json]="highlight.js"
  13. )
  14. extension_of() {
  15. local filename=$1
  16. printf '%s\n' "${filename##*.}" | tr '[:upper:]' '[:lower:]'
  17. }
  18. preview_plan() {
  19. local filename=$1
  20. local ext
  21. ext=$(extension_of "$filename")
  22. local renderer=${RENDERERS[$ext]:-fallback}
  23. printf '%-18s -> %-18s async=%s\n' "$filename" "$renderer" "$([[ $renderer != fallback ]] && echo yes || echo no)"
  24. }
  25. main() {
  26. local files=(contract.pdf invoice.ofd house.dwfx code.ts archive.bin)
  27. for file in "${files[@]}"; do
  28. preview_plan "$file"
  29. done
  30. }
  31. main "$@"