| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package main
- import (
- "encoding/json"
- "fmt"
- "path/filepath"
- "strings"
- )
- type PreviewFile struct {
- Name string `json:"name"`
- Renderer string `json:"renderer"`
- Async bool `json:"async"`
- }
- var renderers = map[string]string{
- ".pdf": "pdfjs-dist",
- ".ofd": "DLTech21/ofd.js",
- ".typ": "typst.ts",
- ".dxf": "@flyfish-dev/cad-viewer",
- ".dwg": "@flyfish-dev/cad-viewer",
- ".dwf": "@flyfish-dev/cad-viewer",
- ".dwfx": "@flyfish-dev/cad-viewer",
- ".xps": "@flyfish-dev/cad-viewer",
- ".json": "highlight.js",
- }
- func planPreview(name string) PreviewFile {
- ext := strings.ToLower(filepath.Ext(name))
- renderer := renderers[ext]
- if renderer == "" {
- renderer = "fallback"
- }
- return PreviewFile{
- Name: name,
- Renderer: renderer,
- Async: renderer != "fallback",
- }
- }
- func main() {
- files := []string{"contract.pdf", "invoice.ofd", "report.typ", "component.vue"}
- plans := make([]PreviewFile, 0, len(files))
- for _, name := range files {
- plans = append(plans, planPreview(name))
- }
- payload, err := json.MarshalIndent(plans, "", " ")
- if err != nil {
- panic(err)
- }
- fmt.Println(string(payload))
- }
|