« get me outta code hell

structures.js « thing « src - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/thing/structures.js
blob: e6b9fd4b920e2f04606328635ec7cc93eb1e3465 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Generic structure utilities common across various Thing types.

export function validateReference(type = '') {
    return ref => {
        if (typeof ref !== 'string')
            throw new TypeError(`Expected a string, got ${ref}`);

        if (type) {
            if (!ref.includes(':'))
                throw new TypeError(`Expected ref to begin with "${type}:", but no type specified (ref: ${ref})`);

            const typePart = ref.split(':')[0];
            if (typePart !== type)
                throw new TypeError(`Expected ref to begin with "${type}:", got "${typePart}:" (ref: ${ref})`);
        }
    };
}