|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import arvadosTypeName from 'arvados-type-name';
-
- const UUID_PATTERN = '[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{15}';
- const PDH_PATTERN = '[a-f0-9]{32}\\+[0-9]+';
-
- const UUID_REGEX = new RegExp(UUID_PATTERN);
- const PDH_REGEX = new RegExp(PDH_PATTERN);
-
- const UUID_REGEX_G = new RegExp(UUID_PATTERN, 'g');
- const PDH_REGEX_G = new RegExp(PDH_PATTERN, '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 detectIdentifiers(value) {
- return this.detectUuids(value).concat(this.detectPDHs(value));
- }
-
- static detectUuids(value) {
- let m;
- const res = [];
- while (m = UUID_REGEX_G.exec(value)) {
- res.push(m);
- }
- return res;
- }
-
- static detectPDHs(value) {
- let m;
- const res = [];
- while (m = PDH_REGEX_G.exec(value)) {
- res.push(m);
- }
- return res;
- }
-
- 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;
|