[Library|Trunk]
Checks for PIDs: - Landing page, ORCID page: add looser rule for pids (if not valid set it is a doi) - String utils: Identifier.isValidDOI add generic rule doi starting with "10." git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-services-library/trunk/ng-openaire-library/src/app@60970 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
parent
336f85aa97
commit
e34c5d4daa
|
@ -154,7 +154,7 @@ export class ResultLandingComponent {
|
||||||
this.id = data["id"];
|
this.id = data["id"];
|
||||||
this.initMetaAndLinks("result");
|
this.initMetaAndLinks("result");
|
||||||
} else if (data["pid"]) {
|
} else if (data["pid"]) {
|
||||||
this.identifier = Identifier.getIdentifierFromString(decodeURIComponent(data["pid"]));
|
this.identifier = Identifier.getIdentifierFromString(decodeURIComponent(data["pid"]),false);
|
||||||
|
|
||||||
if(!this.type) {
|
if(!this.type) {
|
||||||
this.type = "result";
|
this.type = "result";
|
||||||
|
|
|
@ -281,7 +281,7 @@ export class MyOrcidLinksComponent {
|
||||||
|
|
||||||
for(let work of works) {
|
for(let work of works) {
|
||||||
for(let pid of work['pids']) {
|
for(let pid of work['pids']) {
|
||||||
let identifier: Identifier = Identifier.getIdentifierFromString(pid);
|
let identifier: Identifier = Identifier.getIdentifierFromString(pid, false);
|
||||||
this.orcidQuery += (this.orcidQuery ? " or " : "") + ('(pidclassid exact "'+identifier.class+'" and pid="'+StringUtils.URIEncode(identifier.id)+'")');
|
this.orcidQuery += (this.orcidQuery ? " or " : "") + ('(pidclassid exact "'+identifier.class+'" and pid="'+StringUtils.URIEncode(identifier.id)+'")');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -177,7 +177,7 @@ export class Identifier {
|
||||||
return identifiers;
|
return identifiers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static getIdentifierFromString(pid: string): Identifier {
|
public static getIdentifierFromString(pid: string,strict:boolean = true): Identifier {
|
||||||
if (Identifier.isValidDOI(pid)) {
|
if (Identifier.isValidDOI(pid)) {
|
||||||
return {"class": "doi", "id": pid};
|
return {"class": "doi", "id": pid};
|
||||||
} else if (Identifier.isValidORCID(pid)) {
|
} else if (Identifier.isValidORCID(pid)) {
|
||||||
|
@ -189,7 +189,8 @@ export class Identifier {
|
||||||
} else if (Identifier.isValidHANDLE(pid)) {
|
} else if (Identifier.isValidHANDLE(pid)) {
|
||||||
return {"class": "handle", "id": pid};
|
return {"class": "handle", "id": pid};
|
||||||
}
|
}
|
||||||
return null;
|
//set it as a doi, to catch the case that doi has not valid format
|
||||||
|
return (strict?null:{"class": "doi", "id": pid});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static getResultPIDFromIdentifiers(identifiers: Map<string, string[]>): Identifier {
|
public static getResultPIDFromIdentifiers(identifiers: Map<string, string[]>): Identifier {
|
||||||
|
@ -210,9 +211,11 @@ export class Identifier {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static isValidDOI(str: string): boolean {
|
public static isValidDOI(str: string): boolean {
|
||||||
var exp1 = /\b(10[.][0-9]{4,}(?:[.][0-9]+)*\/(?:(?!["&\'<>])\S)+)\b/g
|
//keep only exp3?
|
||||||
var exp2 = /\b(10[.][0-9]{4,}(?:[.][0-9]+)*\/(?:(?!["&\'<>])[[:graph:]])+)\b/g
|
let exp1 = /\b(10[.][0-9]{4,}(?:[.][0-9]+)*\/(?:(?!["&\'<>])\S)+)\b/g;
|
||||||
return (str.match(exp1) != null || str.match(exp2) != null);
|
let exp2 = /\b(10[.][0-9]{4,}(?:[.][0-9]+)*\/(?:(?!["&\'<>])[[:graph:]])+)\b/g;
|
||||||
|
let exp3 = /\b(10.*)\b/g;
|
||||||
|
return (str.match(exp1) != null || str.match(exp2) != null || str.match(exp3) != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static isValidORCID(str: string): boolean {
|
public static isValidORCID(str: string): boolean {
|
||||||
|
|
Loading…
Reference in New Issue