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

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