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 1consttext='"It\'s a hellacious problem," said Hugh Ray to the...';constquotes=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 2consttext2='Plus "Nu cred ca este adevarat!", a spus Vlad Filat';constlang='ro';constquotes2=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.