Stemmer constructor

Stemmer(
  1. Locale locale
)

Creates a Stemmer for the given locale.

Throws ArgumentError if the locale's language code is not supported.

Supported (ISO 639-1 → Snowball algorithm): ar (Arabic), hy (Armenian), eu (Basque), ca (Catalan), da (Danish), nl (Dutch), en (English), fi (Finnish), fr (French), de (German), el (Greek), hi (Hindi), hu (Hungarian), id (Indonesian), ga (Irish), it (Italian), lt (Lithuanian), ne (Nepali), no (Norwegian), pt (Portuguese), ro (Romanian), ru (Russian), sr (Serbian), es (Spanish), sv (Swedish), ta (Tamil), tr (Turkish), yi (Yiddish) — every language package:snowball_stemmer implements, except its generic porter variant (an alternate English algorithm, not a distinct language — en already maps to Algorithm.english).

Implementation

factory Stemmer(Locale locale) {
  switch (locale.languageCode) {
    case 'ar':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.arabic));
    case 'hy':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.armenian));
    case 'eu':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.basque));
    case 'ca':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.catalan));
    case 'da':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.danish));
    case 'nl':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.dutch));
    case 'en':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.english));
    case 'fi':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.finnish));
    case 'fr':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.french));
    case 'de':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.german));
    case 'el':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.greek));
    case 'hi':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.hindi));
    case 'hu':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.hungarian));
    case 'id':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.indonesian));
    case 'ga':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.irish));
    case 'it':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.italian));
    case 'lt':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.lithuanian));
    case 'ne':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.nepali));
    case 'no':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.norwegian));
    case 'pt':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.portuguese));
    case 'ro':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.romanian));
    case 'ru':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.russian));
    case 'sr':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.serbian));
    case 'es':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.spanish));
    case 'sv':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.swedish));
    case 'ta':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.tamil));
    case 'tr':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.turkish));
    case 'yi':
      return Stemmer._internal(locale, SnowballStemmer(Algorithm.yiddish));
  }
  throw ArgumentError.value(
    locale.languageCode,
    'locale.languageCode',
    'No stemmer available for language',
  );
}