66 lines
1.5 KiB
JavaScript
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;
|
|
}
|
|
} |