A node.js module for extracting quotes from text.
Requires Node.js ^20.19 or >= 22.12. The package is ESM-only.
Supported languages: ['ro', 'ru', 'bg', 'hu', 'it', 'cs', 'pl', 'en', 'es'].
The project detects 2 parts of a quote:
- The quote body - exact;
- The author's name - NOT exact.
import { parse, languages } from "quote-parser";
// example 1
const text = '"It\'s a hellacious problem," said Hugh Ray to the...';
const quotes = parse(text, 'en', { minLength: 10 });
console.log(quotes);
// [ { index: 1,
// text: 'It\'s a hellacious problem,',
// name: { index: 34, text: 'Hugh Ray to the...' },
// score: 2 } ]
// example 2
const text2 = 'Plus "Nu cred ca este adevarat!", a spus Vlad Filat';
const lang = 'ro';
const quotes2 = parse(text2, lang, {
minLength: 15,
persons: [{
index: 41,
id: 101
}]
});
console.log(quotes2);
// [ { index: 6,
// text: 'Nu cred ca este adevarat!',
// name: { index: 41, text: 'Vlad Filat' },
// score: 2,
// author: { index: 41, id: 101 } } ]CommonJS: on Node ^20.19 / >= 22.12, require("quote-parser") still works
(Node loads the ESM build via require(esm)):
const { parse, languages } = require("quote-parser");Return a list of supported languages.
Extract quotes from text. Returns an empty array when nothing matches
(including for empty text); throws only on a non-string text/lang or an
unsupported language.
- text (String) required;
- lang (String) required - two chars language code;
- options (Object):
- minLength (Number) - min quote length, default: 30;
- persons ([Person]) - a list of persons, a person:
- index (Number) required - index of the person name in text;
- extraRules ([Rule]) - an array of rules. A rule has:
- reg (Regexp) - a regular expression
- quote (Number) - quote index in regex.
- name (Number) - name index in regex.
- priority (Number) - rank of this rule's matches, default: 2.
A list of quotes:
- text (String) - quote text;
- index (Number) - quote index in the text;
- name (Object) - an object where can be the author's name:
- text (String);
- index (Number);
- score (Number) - attribution confidence: 2 = matched a reporting-verb pattern, 1 = matched a generic punctuation pattern (colon/dash) or an inferred split-quote continuation. When several rules match the same quote, the highest score wins.
- author (Object) - Author if founded.
See CHANGELOG.md.