#include #include #include #include #include "main.hpp" std::string viewer_name() { return "Flyfish Viewer"; } bool PreviewFile::requiresAsyncChunk() const { return renderer != "fallback"; } std::string extensionOf(const std::string& filename) { const auto dot = filename.find_last_of('.'); return dot == std::string::npos ? "" : filename.substr(dot + 1); } std::optional rendererFor(const std::string& extension) { static const std::map renderers = { {"pdf", "pdfjs-dist"}, {"ofd", "DLTech21/ofd.js"}, {"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"}, {"cpp", "highlight.js"} }; const auto found = renderers.find(extension); if (found == renderers.end()) return std::nullopt; return found->second; } std::vector createPreviewQueue(const std::vector& filenames) { std::vector queue; for (const auto& name : filenames) { queue.push_back({ name, rendererFor(extensionOf(name)).value_or("fallback"), 0 }); } return queue; } int main() { for (const auto& file : createPreviewQueue({"contract.pdf", "house.dwfx", "main.cpp"})) { std::cout << file.name << " -> " << file.renderer << std::endl; } return 0; }