Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including get-dois with all npm packages installed. Try it out:

var getDois = require("get-dois")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

get-dois v3.1.0

Detect Digital Object Identifiers listed in the metadata of a DOM tree

get-dois

A small module that takes a DOM tree and returns all Digital Object Identifiers (DOIs) located in that tree's metadata.

Unfortunately, academic publishers use a wide variety of metadata "standards". This package normalises between Dublin Core, Highwire Press tags, etc., and the different formatting rules used for DOIs.

To use this library outside of a browser context, you can use a library like jsdom.

This project also includes TypeScript type definitions.

Installation

npm install get-dois --save

Usage

import { getDois } from 'get-dois';

const head = document.getElementsByTagName('head').item(0);
const dois = getDois(head);
//=> [ '10.31222/osf.io/796tu' ]

API

getDois(domTree: Document | Element): string[]

Parameter: domTree

Either window.document or an HTML element whose children might include meta tags containing a DOI.

Returns

An array of DOIs. If no DOIs are found, this will return an empty array. Duplicate DOIs will only be listed once. Note that a page might list multiple DOIs.

Supported meta tags

At the time of writing, get-dois supports detecting DOIs embedded in a webpage as:

  • Highwire Press tags (citation_doi)
  • Eprints tags (eprints.id_number and/or eprints.official_url)
  • bepress tags (bepress_citation_doi)
  • PRISM tags (prism.doi)
  • Dublin Core Schema markup (dc.identifier)

If you encounter a different format that is not yet supported, please file an issue.

Changelog

See CHANGELOG.md.

License

MIT © Vincent Tunru

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free