| @@ -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; | |||||