import Cite from 'npm:citation-js';
import 'npm:@citation-js/plugin-bibtex'
const DOI_REGEX = /\b(10\.\d{4,9}\/[-._;()\/:\w]+)\b/i;
export const extractDOI = (content) => {
if (!content) return null;
if (!content.match) return null;
const doiRegex = DOI_REGEX;
const doiMatch = content.match(doiRegex);
let doi = doiMatch ? doiMatch[0] : null;
if (doi) {
doi = doi.replace(/^doi[:\/]/i, '');
doi = doi.replace(/v\d+$/, '');
}
return doi;
};
export async function getCitation(citationId: string, type = 'bibtex', opts) {
citationId = extractDOI(citationId);
console.log('citationId', citationId)
let example = await Cite.async(citationId);
let output;
if (type == 'json') {
output = example.format('data', {
format: 'object',
...opts
});
} else if (type == 'html') {
output = example.format('bibliography', {
format: 'html',
template: 'apa',
...opts
});
} else if (type == 'bibliography') {
output = example.format('bibliography', {
format: 'text',
template: 'apa',
...opts
});
} else if (type == 'bibtex') {
output = example.format('bibtex', {
template: 'apa',
...opts
});
}
else {
output = example.format('citation', {
format: 'html',
template: 'apa',
...opts
});
}
return output;
}