diff options
Diffstat (limited to 'src/thing/structures.js')
-rw-r--r-- | src/thing/structures.js | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/thing/structures.js b/src/thing/structures.js new file mode 100644 index 00000000..e6b9fd4b --- /dev/null +++ b/src/thing/structures.js @@ -0,0 +1,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})`); + } + }; +} |