virtual-star/lib/render/file-helper.js
2025-04-21 21:46:30 -04:00

66 lines
1.5 KiB
JavaScript

import { fragmentFormats } from "../struct/fragment.js";
export const FileHelper = {
isContent(fileEnt) {
return this.isFragment(fileEnt);
},
isFragment(fileEnt) {
if(!fileEnt.isFile()) {
return false;
}
const contentExtensions = [
'.vs.md',
'.vs.html',
];
const matchesAnyContentExtensions = contentExtensions.some(
(ext) => fileEnt.name.endsWith(ext)
);
return matchesAnyContentExtensions;
},
isSettingsFile(fileEnt) {
if(!fileEnt.isFile()) {
return false;
}
return fileEnt.name === '_settings.json';
},
getFragmentType(fileEnt) {
const filePath = fileEnt.name;
if(filePath.endsWith('.vs.md')) {
return fragmentFormats.V_MARKDOWN;
}
if(filePath.endsWith('.vs.html')) {
return fragmentFormats.V_HTML;
}
return null;
},
getOutputFileName(fileEnt) {
if(this.isContent(fileEnt)) {
const stripped = this.getBaseName(fileEnt);
return `${stripped}.html`;
} else {
return fileEnt.name;
}
},
getBaseName(fileEnt) {
const isMd = (this.getFragmentType(fileEnt) === fragmentFormats.V_MARKDOWN);
const ext = isMd ? '.vs.md' : '.vs.html';
const idx = fileEnt.name.lastIndexOf(ext);
const stripped = fileEnt.name.substring(0, idx);
return stripped;
}
}