diff --git a/landingPages/landing-utils/parsingFunctions.class.ts b/landingPages/landing-utils/parsingFunctions.class.ts index 3093baac..45d8b586 100644 --- a/landingPages/landing-utils/parsingFunctions.class.ts +++ b/landingPages/landing-utils/parsingFunctions.class.ts @@ -599,7 +599,8 @@ export class ParsingFunctions { if (pid.classid == "doi" || pid.classid == "pmc" || pid.classid == "handle" || pid.classid == "pmid" || pid.classid == "re3data" || pid.classid == "swhid" || pid.classid == "ROR" || pid.classid == "ISNI" || pid.classid == "Wikidata" || pid.classid == "FundRef" - || pid.classid == "RRID") { + || pid.classid == "RRID" + || pid.classid == "arXiv") { if (!identifiers.has(pid.classid)) { identifiers.set(pid.classid, new Array()); } @@ -610,7 +611,8 @@ export class ParsingFunctions { if (pid[i].classid == "doi" || pid[i].classid == "pmc" || pid[i].classid == "handle" || pid[i].classid == "pmid" || pid[i].classid == "re3data" || pid[i].classid == "swhid" || pid[i].classid == "ROR" || pid[i].classid == "ISNI" || pid[i].classid == "Wikidata" || pid[i].classid == "FundRef" - || pid[i].classid == "RRID") { + || pid[i].classid == "RRID" + || pid[i].classid == "arXiv") { if (!identifiers.has(pid[i].classid)) { identifiers.set(pid[i].classid, new Array()); } diff --git a/landingPages/landing-utils/showIdentifiers.component.ts b/landingPages/landing-utils/showIdentifiers.component.ts index 0d5f0219..6a88a8b8 100644 --- a/landingPages/landing-utils/showIdentifiers.component.ts +++ b/landingPages/landing-utils/showIdentifiers.component.ts @@ -27,7 +27,8 @@ import {properties} from "../../../../environments/environment"; {{item}} @@ -140,6 +141,8 @@ export class ShowIdentifiersComponent implements AfterViewInit { return properties.fundRefURL; } else if(key == "RRID") { return properties.rridURL; + } else if(key == "arXiv") { + return properties.arxivURL; } } diff --git a/utils/properties/env-properties.ts b/utils/properties/env-properties.ts index af63c8b2..cf9a8c2a 100644 --- a/utils/properties/env-properties.ts +++ b/utils/properties/env-properties.ts @@ -53,6 +53,7 @@ export interface EnvProperties { wikiDataURL?: string; fundRefURL?: string; rridURL?: string; + arxivURL?: string; fairSharingURL?: string, openScienceCloudURL?: string, eoscMarketplaceURL?: string, diff --git a/utils/properties/environments/environment.ts b/utils/properties/environments/environment.ts index cd8e28cf..f8aebfd1 100644 --- a/utils/properties/environments/environment.ts +++ b/utils/properties/environments/environment.ts @@ -26,6 +26,7 @@ export let common: EnvProperties = { wikiDataURL: "https://www.wikidata.org/wiki/", fundRefURL: "https://data.crossref.org/fundingdata/funder/", rridURL: "https://scicrunch.org/resolver/", + arxivURL: "https://arxiv.org/abs/", fairSharingURL: "https://fairsharing.org/", openScienceCloudURL: "https://open-science-cloud.ec.europa.eu/resources/services/", sherpaURL: "http://sherpa.ac.uk/romeo/issn/", diff --git a/utils/string-utils.class.ts b/utils/string-utils.class.ts index 75d12faf..e186f303 100644 --- a/utils/string-utils.class.ts +++ b/utils/string-utils.class.ts @@ -150,7 +150,7 @@ export class DOI { } export class Identifier { - class: "doi" | "pmc" | "pmid" | "handle" | "ORCID" | "re3data" | "swhid" | "ror" | "wikidata" | "fundref" | "isni" | "RRID" = null; + class: "doi" | "pmc" | "pmid" | "handle" | "ORCID" | "re3data" | "swhid" | "ror" | "wikidata" | "fundref" | "isni" | "RRID" | "arXiv" = null; id: string; public static getDOIsFromString(str: string): string[] { @@ -215,13 +215,15 @@ export class Identifier { return {"class": "isni", "id": pid}; } else if(Identifier.isValidRrid(pid)) { return {"class": "RRID", "id": pid}; + } else if(Identifier.isValidArxiv(pid)) { + return {"class": "arXiv", "id": pid}; } //set it as a doi, to catch the case that doi has not valid format return (strict?null:{"class": "doi", "id": pid}); } public static getPIDFromIdentifiers(identifiers: Map): Identifier { - let classes:string [] = ["doi", "handle", "pmc", "pmid", "re3data", "swhid", "ror", "wikidata", "fundref", "isni", "rrid"]; + let classes:string [] = ["doi", "handle", "pmc", "pmid", "re3data", "swhid", "ror", "wikidata", "fundref", "isni", "rrid", "arXiv"]; if(identifiers && identifiers.size > 0) { for (let cl of classes) { if (identifiers.get(cl)) { @@ -309,6 +311,14 @@ export class Identifier { let exp = /^RRID:.*$/g; return str.match(exp) != null; } + + public static isValidArxiv(str: string): boolean { + // YYMM.NNNNN + // YYMM.NNNN + // arch-ive/YYMMNNN - hep-th/ + let exp = /^([0-9]{2}(0[1-9]|1[0-2])\.[0-9]{3,4})|hep-th\/([0-9]{2}(0[1-9]|1[0-2])[0-9]{3})\w+$/g; + return str.match(exp) != null; + } } export class StringUtils {