Skip to content

Repository files navigation

quote-parser

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:

  1. The quote body - exact;
  2. The author's name - NOT exact.

Usage

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");

API

languages()

Return a list of supported languages.

parse(text, lang[, options])

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.

Result

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.

Changelog

See CHANGELOG.md.

About

A node.js module for extracting quotes from text

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages