usethis icon indicating copy to clipboard operation
usethis copied to clipboard

Add DOI badge

Open burgerga opened this issue 3 years ago • 1 comments

Would be nice if we could add a DOI badge to our R packages, especially if they are published somewhere or citable using zenodo.

For example for https://zenodo.org/record/4692672 (my mdftracks package), this would be the badge: DOI (if for some reason this won't load, please click the zenodo link, they also show the badge)

I have written a function that will add this badge:

extract_doi <- function(x) {
  # pattern from https://www.crossref.org/blog/dois-and-matching-regular-expressions/
  pattern <- ".*(10\\.\\d{4,9}/[-._;()/:A-Z0-9]+)$"
  if(!grepl(pattern, x, ignore.case = T, perl = T)) stop(glue("{x} is not a valid doi"))
  gsub(pattern, "\\1", x, ignore.case = T, perl = T)
}

use_doi_badge <- function(doi) {
  doi <- extract_doi(doi)
  src <- glue("https://zenodo.org/badge/DOI/{doi}.svg")
  href <- glue("https://doi.org/{doi}")
  use_badge("DOI", href, src)
  invisible(TRUE)
}

It accepts "naked" DOIs such as "10.5281/zenodo.4725473", or DOI links such as "https://doi.org/10.5281/zenodo.4725473" Let me know if this would be useful, then I'll write some tests for the extract_doi function and prepare a pull request.

burgerga avatar Apr 28 '21 15:04 burgerga

Maybe related to #1469

jennybc avatar Sep 28 '21 18:09 jennybc