UNPKG

@lunarisapp/readability

Version:

A library for calculating readability scores of texts

282 lines (266 loc) 7.96 kB
import { Language } from '@lunarisapp/language'; export { Language } from '@lunarisapp/language'; /** * Calculate the Flesch reading ease test for text. * https://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests#Flesch_reading_ease */ declare function fleschReadingEase(params: { sentences: number; syllablesPerWord: number; coefficients?: { base?: number; sentences?: number; syllablesPerWord?: number; }; }): number; /** * Calculate the Flesch-Kincaid grade level for text. * https://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests#Flesch%E2%80%93Kincaid_grade_level * TODO: can we support multiple languages? */ declare function fleschKincaidGrade(params: { sentences: number; syllablesPerWord: number; }): number; /** * Calculate the SMOG index for text. * https://en.wikipedia.org/wiki/SMOG */ declare function smogIndex(params: { sentences: number; polysyllables: number; }): number; /** * Calculate the Coleman-Liau index for text. * https://en.wikipedia.org/wiki/Coleman%E2%80%93Liau_index */ declare function colemanLiauIndex(params: { letters: number; sentences: number; }): number; /** * Calculate the automated readability index for text. * https://en.wikipedia.org/wiki/Automated_readability_index */ declare function automatedReadabilityIndex(params: { chars: number; words: number; sentences: number; }): number; /** * Calculate the Linsear Write formula for text. * https://en.wikipedia.org/wiki/Linsear_Write */ declare function linsearWriteFormula(params: { sentences: number; syllablesPerWords: number[]; }): number; /** * Calculate Gutierrez Polini's readability formula for text (Spanish only). * https://www.spanishreadability.com/gutierrez-de-polinis-readability-formula */ declare function gutierrezPolini(params: { words: number; sentences: number; letters: number; }): number; /** * Calculate Crawford's formula for text (Spanish only). * https://www.spanishreadability.com/the-crawford-score-for-spanish-texts */ declare function crawford(params: { words: number; sentences: number; syllables: number; }): number; /** * Calculate the Gulpease index for text (Italian only). * https://it.wikipedia.org/wiki/Indice_Gulpease */ declare function gulpeaseIndex(params: { sentences: number; chars: number; words: number; }): number; declare const VARIANTS: { 1: { ms: number; sl: number; iw: number; es: number; base: number; }; 2: { ms: number; sl: number; iw: number; es: number; base: number; }; 3: { ms: number; sl: number; iw: number; es: number; base: number; }; 4: { ms: number; sl: number; iw: number; es: number; base: number; }; }; type WienerSachtextformelVariant = keyof typeof VARIANTS; /** * Calculate the Wiener Sachtextformel for text (german). * https://de.wikipedia.org/wiki/Lesbarkeitsindex#Wiener_Sachtextformel */ declare function wienerSachtextformel(params: { words: number; sentences: number; longWords: number; polysyllables: number; monosyllables: number; variant: WienerSachtextformelVariant; }): number; /** * Calculate the McAlpine EFLAW score. * https://www.angelfire.com/nd/nirmaldasan/journalismonline/fpetge.html */ declare function mcalpineEflaw(params: { words: number; sentences: number; miniWords: number; }): number; /** * Calculate the LIX ratio. * https://readable.com/readability/lix-rix-readability-formulas/ * @param params */ declare function lix(params: { words: number; longWords: number; wordsPerSentence: number; }): number; /** * Calculate the RIX ratio. * https://readable.com/readability/lix-rix-readability-formulas/ * @param params */ declare function rix(params: { longWords: number; sentences: number; }): number; declare class TextReadability { private readonly cache; private readonly cacheEnabled; private lang; private textStats; constructor(props?: { lang?: Language; cache?: boolean; }); private getCfg; /** * Set the language for the text statistics. * @param lang */ setLang(lang: Language): void; /** * Calculate the Flesch reading ease test for text. * https://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests#Flesch_reading_ease * @param text */ fleschReadingEase(text: string): number; private computeFleschReadingEase; /** * Calculate the Flesch-Kincaid grade level for text. * https://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests#Flesch%E2%80%93Kincaid_grade_level * TODO: can we support multiple languages? * @param text */ fleschKincaidGrade(text: string): number; private computeFleschKincaidGrade; /** * Calculate the SMOG index for text. * https://en.wikipedia.org/wiki/SMOG * @param text */ smogIndex(text: string): number; private computeSmogIndex; /** * Calculate the Coleman-Liau index for text. * https://en.wikipedia.org/wiki/Coleman%E2%80%93Liau_index * @param text */ colemanLiauIndex(text: string): number; private computeColemanLiauIndex; /** * Calculate the automated readability index for text. * https://en.wikipedia.org/wiki/Automated_readability_index * @param text */ automatedReadabilityIndex(text: string): number; private computeAutomatedReadabilityIndex; /** * Calculate the Linsear Write formula for text. * https://en.wikipedia.org/wiki/Linsear_Write * @param text * @param sample Number of words to sample from the text */ linsearWriteFormula(text: string, sample?: number): number; private computeLinsearWriteFormula; /** * Calculate Gutierrez Polini's readability formula for text (Spanish only). * https://www.spanishreadability.com/gutierrez-de-polinis-readability-formula * @param text */ gutierrezPolini(text: string): number; private computeGutierrezPolini; /** * Calculate Crawford's formula for text (Spanish only). * https://www.spanishreadability.com/the-crawford-score-for-spanish-texts * @param text */ crawford(text: string): number; private computeCrawford; /** * Calculate the Gulpease index for text (Italian only). * https://it.wikipedia.org/wiki/Indice_Gulpease * @param text */ gulpeaseIndex(text: string): number; private computeGulpeaseIndex; /** * Calculate the RIX ratio. * https://readable.com/readability/lix-rix-readability-formulas/ * @param text */ rix(text: string): number; private computeRix; /** * Calculate the LIX ratio. * https://readable.com/readability/lix-rix-readability-formulas/ * @param text */ lix(text: string): number; private computeLix; /** * Calculate the Wiener Sachtextformel for text (german). * https://de.wikipedia.org/wiki/Lesbarkeitsindex#Wiener_Sachtextformel * @param text * @param variant */ wienerSachtextformel(text: string, variant?: WienerSachtextformelVariant): number; private computeWienerSachtextformel; /** * Calculate the McAlpine EFLAW score for text. * https://www.angelfire.com/nd/nirmaldasan/journalismonline/fpetge.html * @param text */ mcalpineEflaw(text: string): number; private computeMcalpineEflaw; } export { TextReadability, VARIANTS, type WienerSachtextformelVariant, automatedReadabilityIndex, colemanLiauIndex, crawford, fleschKincaidGrade, fleschReadingEase, gulpeaseIndex, gutierrezPolini, linsearWriteFormula, lix, mcalpineEflaw, rix, smogIndex, wienerSachtextformel };