core/converters/folder.converter.ts
core/converters/folder.converter.ts is a file in Bane's Lab Site. 36 lines of code and 11 definitions.
import { LINE_INFIX, PATH_SEPARATOR, TREE_MARK } from "#configuration/constants/anatomy.constants";
import { ANCHOR_PREFIX } from "#configuration/constants/document.constants";
import type { NodeTarget } from "#types/folder.types";
import { TREE_TAB } from "#core/ids/anatomy.ids";
export const targetOf = function targetOf(href: string): NodeTarget | null {
const cut = href.lastIndexOf(ANCHOR_PREFIX);
if (cut === -1) {
return null;
}
const fragment = href.slice(cut + ANCHOR_PREFIX.length);
const mark = fragment.indexOf(LINE_INFIX);
if (mark === -1) {
return { id: fragment, line: null, text: null };
}
const tail = fragment.slice(mark + LINE_INFIX.length);
const line = Number(tail);
return Number.isInteger(line)
? { id: fragment.slice(0, mark), line, text: null }
: { id: fragment.slice(0, mark), line: null, text: tail };
};
export const qualifiedPath = function qualifiedPath(tree: string, path: string): string {
return tree === TREE_TAB ? path : tree + TREE_MARK + path;
};
export const treeOf = function treeOf(path: string): string {
const cut = path.indexOf(TREE_MARK);
return cut === -1 ? TREE_TAB : path.slice(0, cut);
};
export const localPath = function localPath(path: string): string {
const cut = path.indexOf(TREE_MARK);
return cut === -1 ? path : path.slice(cut + TREE_MARK.length);
};
export const parentPath = function parentPath(path: string): string {
const local = localPath(path);
const cut = local.lastIndexOf(PATH_SEPARATOR);
return qualifiedPath(treeOf(path), cut === -1 ? "" : local.slice(0, cut));
};