UNPKG

rehype-citation

Version:

rehype plugin to add citation and bibliography from bibtex files

50 lines (49 loc) 1.38 kB
import { parse as parseFile } from './file.js'; import { parse as parseBibtxt } from './bibtxt.js'; import { parse as parseEntries, parseBibtex } from './entries.js'; export const ref = '@bibtex'; export const formats = { '@biblatex/text': { parse: parseFile, parseType: { dataType: 'String', predicate: /@\s{0,5}[A-Za-z]{1,13}\s{0,5}\{\s{0,5}[^@{}"=,\\\s]{0,100}\s{0,5},[\s\S]*\}/, }, }, '@biblatex/entry+object': { parse(input) { return parseEntries([input]); }, parseType: { dataType: 'SimpleObject', propertyConstraint: { props: ['type', 'label', 'properties'], }, }, }, '@biblatex/entries+list': { parse: parseEntries, parseType: { elementConstraint: '@biblatex/entry+object', }, }, '@bibtex/text': { parse: parseFile, outputs: '@bibtex/entries+list', }, '@bibtex/entry+object': { parse(input) { return parseBibtex([input]); }, }, '@bibtex/entries+list': { parse: parseBibtex, }, '@bibtxt/text': { parse: parseBibtxt, parseType: { dataType: 'String', predicate: /^\s*(\[(?!\s*[{[]).*?\]\s*(\n\s*[^[]((?!:)\S)+\s*:\s*.+?\s*)*\s*)+$/, }, }, };