e87390adb9
* update eslint and dependencies, fix linting errors that can be fixed with --fix * fix lots of linting errors * update eslintrc, fix some linting errors * fix all server side linting errors, untested * fix errors that fixing linting errors had caused * fix client side eslint errors * fix client side linting errors * fix refs lint errors * fix more linting errors * update eslint and dependencies, fix linting errors that can be fixed with --fix * fix lots of linting errors * update eslintrc, fix some linting errors * fix all server side linting errors, untested * fix errors that fixing linting errors had caused * fix client side eslint errors * fix client side linting errors * fix refs lint errors * fix more linting errors * fix some accessibility linting errors * fix a lot of linting errors * fix a billion more linting errors * hopefully fix all linting errors, still need to test * fix bugs that fixing linting had caused
34 lines
964 B
JavaScript
34 lines
964 B
JavaScript
export function resolvePathToFile(filePath, files) {
|
|
const filePathArray = filePath.split('/');
|
|
let resolvedFile;
|
|
let currentFile = files.find(file => file.name === 'root');
|
|
filePathArray.some((filePathSegment, index) => {
|
|
if (filePathSegment === '' || filePathSegment === '.') {
|
|
return false;
|
|
} else if (filePathSegment === '..') {
|
|
return true;
|
|
}
|
|
|
|
let foundChild = false;
|
|
const childFiles = currentFile.children.map(childFileId =>
|
|
files.find(file =>
|
|
file._id.valueOf().toString() === childFileId.valueOf()
|
|
)
|
|
);
|
|
childFiles.some((childFile) => {
|
|
if (childFile.name === filePathSegment) {
|
|
currentFile = childFile;
|
|
foundChild = true;
|
|
if (index === filePathArray.length - 1) {
|
|
resolvedFile = childFile;
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
});
|
|
return !foundChild;
|
|
});
|
|
return resolvedFile;
|
|
}
|
|
|
|
export default resolvePathToFile;
|