|
@@ -0,0 +1,44 @@ |
|
|
|
|
|
import arvadosTypeName from 'arvados-type-name';
|
|
|
|
|
|
|
|
|
|
|
|
const UUID_REGEX = /[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{15}/g;
|
|
|
|
|
|
const PDH_REGEX = /[a-f0-9]{32}\+[0-9]+/g;
|
|
|
|
|
|
|
|
|
|
|
|
class WBIdTools {
|
|
|
|
|
|
static isIdentifier(value) {
|
|
|
|
|
|
return ( this.isUuid(value) || this.isPDH(value) );
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static isUuid(value) {
|
|
|
|
|
|
const m = UUID_REGEX.exec(value);
|
|
|
|
|
|
return (m && m[0] === value);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static isPDH(value) {
|
|
|
|
|
|
const m = PDH_REGEX.exec(value);
|
|
|
|
|
|
return (m && m[0] === value);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static startsWithIdentifier(value) {
|
|
|
|
|
|
return ( this.startsWithUuid(value) || this.startsWithPDH(value) );
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static startsWithUuid(value) {
|
|
|
|
|
|
const m = UUID_REGEX.exec(value);
|
|
|
|
|
|
return ( m && m.index === 0 );
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static startsWithPDH(value) {
|
|
|
|
|
|
const m = PDH_REGEX.exec(value);
|
|
|
|
|
|
return ( m && m.index === 0 );
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static typeName(value) {
|
|
|
|
|
|
if (this.isPDH(value))
|
|
|
|
|
|
return 'collection';
|
|
|
|
|
|
if (this.isUuid(value))
|
|
|
|
|
|
return arvadosTypeName(value);
|
|
|
|
|
|
throw Error('Given value is neither an UUID nor a PDH: ' + value);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export default WBIdTools;
|