Class: ICU4X::PluralRules

Inherits:
Object
  • Object
show all
Defined in:
lib/icu4x/yard_docs.rb

Overview

Provides locale-aware plural rules for cardinal and ordinal numbers.

PluralRules determines the appropriate plural category for a given number based on the locale’s pluralization rules.

Examples:

Cardinal plurals

rules = ICU4X::PluralRules.new(locale)
rules.select(1)   #=> :one
rules.select(2)   #=> :other

Ordinal plurals

rules = ICU4X::PluralRules.new(locale, type: :ordinal)
rules.select(1)   #=> :one   (1st)
rules.select(2)   #=> :two   (2nd)
rules.select(3)   #=> :few   (3rd)

See Also:

Instance Method Summary collapse

Constructor Details

#initialize(locale, provider: nil, type: :cardinal) ⇒ PluralRules

Creates a new PluralRules instance.

Examples:

rules = ICU4X::PluralRules.new(locale)
rules = ICU4X::PluralRules.new(locale, type: :ordinal)

Parameters:

  • locale (Locale)

    the locale for plural rules

  • provider (DataProvider, nil) (defaults to: nil)

    data provider (uses default if nil)

  • type (Symbol) (defaults to: :cardinal)

    plural rule type, either ‘:cardinal` or `:ordinal`

Raises:

  • (DataError)

    if data for the locale is unavailable



371
# File 'lib/icu4x/yard_docs.rb', line 371

def initialize(locale, provider: nil, type: :cardinal); end

Instance Method Details

#categoriesArray<Symbol>

Returns all plural categories available for this locale.

Examples:

rules.categories  #=> [:one, :other]

Returns:

  • (Array<Symbol>)

    array of category symbols



414
# File 'lib/icu4x/yard_docs.rb', line 414

def categories; end

#resolved_optionsHash

Returns the resolved options for this instance.

Returns:

  • (Hash)

    options hash with keys:

    • ‘:locale` [String] the resolved locale identifier

    • ‘:type` [Symbol] the plural rule type (`:cardinal` or `:ordinal`)



422
# File 'lib/icu4x/yard_docs.rb', line 422

def resolved_options; end

#select(number) ⇒ Symbol

Selects the plural category for a number.

Examples:

rules.select(0)    #=> :other (in English)
rules.select(1)    #=> :one
rules.select(2)    #=> :other
rules.select(1.5)  #=> :other

Parameters:

  • number (Integer, Float)

    the number to categorize

Returns:

  • (Symbol)

    one of ‘:zero`, `:one`, `:two`, `:few`, `:many`, or `:other`



384
# File 'lib/icu4x/yard_docs.rb', line 384

def select(number); end

#select_range(start_value, end_value) ⇒ Symbol

Selects the plural category for a range of numbers.

This is equivalent to JavaScript’s ‘Intl.PluralRules.selectRange()`. The result depends on both the start and end values according to locale-specific range plural rules.

Examples:

rules.select_range(1, 5)   #=> :other (in English, "1-5 items")
rules.select_range(0, 1)   #=> :other (in English)

Russian plural ranges

ru_rules = ICU4X::PluralRules.new(ICU4X::Locale.parse("ru"), provider: provider)
ru_rules.select_range(1, 2)  #=> :few
ru_rules.select_range(1, 5)  #=> :many

Parameters:

  • start_value (Integer, Float)

    the start of the range

  • end_value (Integer, Float)

    the end of the range

Returns:

  • (Symbol)

    one of ‘:zero`, `:one`, `:two`, `:few`, `:many`, or `:other`



405
# File 'lib/icu4x/yard_docs.rb', line 405

def select_range(start_value, end_value); end