Class: Kotoshu::Algorithms::Capitalization::TurkicCasing

Inherits:
Casing
  • Object
show all
Defined in:
lib/kotoshu/algorithms/capitalization.rb

Overview

Redefines upper and lower, because in Turkic languages lowercase “i” is uppercased as “İ”, and uppercase “I” is downcased as “ı”.

Example:

turkic = Kotoshu::Algorithms::Capitalization::TurkicCasing.new
turkic.lower('Izmir')  # => ['ızmir']
turkic.upper('Izmir')  # => 'IZMİR'

Constant Summary collapse

U2L =
{
  'İ' => 'i',
  'I' => 'ı'
}.freeze
L2U =
{
  'i' => 'İ',
  'ı' => 'I'
}.freeze

Instance Method Summary collapse

Methods inherited from Casing

#capitalize, #coerce, #corrections, #guess, #lowerfirst, #variants

Instance Method Details

#lower(word) ⇒ Array<String>

Translate uppercase Turkic characters to lowercase.

Parameters:

  • word (String)

    The word to lowercase

Returns:

  • (Array<String>)

    List of lowercased variants



208
209
210
211
# File 'lib/kotoshu/algorithms/capitalization.rb', line 208

def lower(word)
  translated = word.chars.map { |c| U2L[c] || c }.join
  super(translated)
end

#upper(word) ⇒ String

Translate lowercase Turkic characters to uppercase.

Parameters:

  • word (String)

    The word to uppercase

Returns:

  • (String)

    Uppercased word



217
218
219
220
# File 'lib/kotoshu/algorithms/capitalization.rb', line 217

def upper(word)
  translated = word.chars.map { |c| L2U[c] || c }.join
  super(translated)
end