vibe.linguistics.transforms

Public transformation functions that use the language registry.

These functions are the primary API for linguistic transformations. They dispatch to the appropriate language-specific rules based on locale.

pluralize

pluralize(obj: Linguistic, if_count: int | None = None, overrides: str | None = None) -> Linguistic

Pluralize items when count dictates; respects locale rules.

Parameters:
  • obj (Linguistic) –

    Linguistic object containing items to pluralize

  • if_count (int | None, default: None ) –

    Optional count - if 1, don't pluralize

  • overrides (str | None, default: None ) –

    Optional override string for ad-hoc irregular forms. Format: "singular->plural,singular2->plural2" Example: "gås->gäss,åsna->åsnor"

Returns:
  • Linguistic

    Modified Linguistic object with pluralized items

make_definite

make_definite(obj: Linguistic, overrides: str | None = None) -> Linguistic

Mark items as definite (the ...), using locale-specific rules.

Parameters:
  • obj (Linguistic) –

    Linguistic object containing items to make definite

  • overrides (str | None, default: None ) –

    Optional override string for ad-hoc forms. Format: "word->definite_form,word2->definite_form2"

Returns:
  • Linguistic

    Modified Linguistic object with definite items

make_possessive

make_possessive(obj: Linguistic, overrides: str | None = None, subject: str | None = None) -> Linguistic

Produce a possessive form; can add a subject (e.g., "the end of ...").

Parameters:
  • obj (Linguistic) –

    Linguistic object containing items to make possessive

  • overrides (str | None, default: None ) –

    Optional override string for ad-hoc forms. Format: "word->possessive_form,word2->possessive_form2"

  • subject (str | None, default: None ) –

    Optional subject to add (language-specific handling)

Returns:
  • Linguistic

    Modified Linguistic object with possessive items

itemize

itemize(obj: Linguistic, conjunction: str) -> Linguistic

Set the conjunction used when rendering the final list.

Parameters:
  • obj (Linguistic) –

    Linguistic object

  • conjunction (str) –

    Conjunction word to use ("and", "or", or custom)

Returns:
  • Linguistic

    Modified Linguistic object with conjunction set

cardinal_filter

cardinal_filter(value: int | float | str, cutoff: int | None = None, locale: str | None = None) -> str

Convert numbers to words with optional cutoff threshold.

Parameters:
  • value (int | float | str) –

    Number to convert

  • cutoff (int | None, default: None ) –

    If provided, numbers > cutoff return as digits

  • locale (str | None, default: None ) –

    Locale code for language-specific conversion

Returns:
  • str

    Number as words or digits string

ordinal_filter

ordinal_filter(value: int | float | str, locale: str | None = None) -> str

Convert numbers to ordinal words.

Parameters:
  • value (int | float | str) –

    Number to convert

  • locale (str | None, default: None ) –

    Locale code for language-specific conversion

Returns:
  • str

    Ordinal word form

doublet_filter

doublet_filter(value: int | float | str, unit: str | None = None, locale: str | None = None) -> str

Create doublet format: 10 -> "ten (10)" with optional unit.

Parameters:
  • value (int | float | str) –

    Number to convert

  • unit (str | None, default: None ) –

    Optional unit to append

  • locale (str | None, default: None ) –

    Locale code for language-specific conversion

Returns:
  • str

    Doublet format string

roman_filter

roman_filter(value: int | float | str, case: str = 'upper') -> str

Convert number to Roman numeral.

Parameters:
  • value (int | float | str) –

    Number to convert (1-3999)

  • case (str, default: 'upper' ) –

    'upper' (default) or 'lower'

Returns:
  • str

    Roman numeral string, or input as string if out of range

alpha_filter

alpha_filter(value: int | float | str, case: str = 'upper') -> str

Convert number to alphabetical label (1=A, 2=B, ..., 26=Z).

Parameters:
  • value (int | float | str) –

    Number to convert (1-26)

  • case (str, default: 'upper' ) –

    'upper' (default) or 'lower'

Returns:
  • str

    Letter A-Z, or input as string if out of range

indefinite_filter

indefinite_filter(value: str, locale: str | None = None, overrides: str | None = None) -> str

Add indefinite article to a word using locale-specific rules.

Parameters:
  • value (str) –

    Word to add article to

  • locale (str | None, default: None ) –

    Locale code for language-specific conversion

  • overrides (str | None, default: None ) –

    Optional override string for ad-hoc forms. Format: "word->indefinite_form,word2->indefinite_form2"

Returns:
  • str

    Word with appropriate indefinite article