Module: StringExt

Extended by:
StringExt
Included in:
StringExt
Defined in:
lib/string_ext.rb,
lib/string_ext/version.rb

Constant Summary collapse

ACCENTS =
{
  'A' => {
    upcase: 'ÁÀÄÂÃÅĀĂǍ',
    downcase: 'áàäâãåāăǎ'
  },
  'E' => {
    upcase: 'ÉÈËÊĒĔĖĚ',
    downcase: 'éèëêēĕėě'
  },
  'I' => {
    upcase: 'ÍÌÏÎĨĬǏ',
    downcase: 'íìïîĩĭǐ'
  },
  'O' => {
    upcase: 'ÓÒÖÔÕŌŎŐǑ',
    downcase: 'óòöôõōŏőǒ'
  },
  'U' => {
    upcase: 'ÚÙÜÛŨŪŬŮŰǓ',
    downcase: 'úùüûũūŭůűǔ'
  }
}
CASES =
{
  downcase: 'ñç' + ACCENTS.values.map { |a| a[:downcase] }.join,
  upcase: 'ÑÇ' + ACCENTS.values.map { |a| a[:upcase] }.join
}
UNACCENT_REPLACEMENTS =
ACCENTS.each_with_object({accented: '', unaccented: ''}) do |(char, cases), replacements|
  replacements[:accented] += cases[:upcase] + cases[:downcase]
  replacements[:unaccented] += (char * cases[:upcase].size) + (char.downcase * cases[:downcase].size)
end
VERSION =
'0.1.1'

Instance Method Summary collapse

Instance Method Details

#downcase(string) ⇒ Object



45
46
47
# File 'lib/string_ext.rb', line 45

def downcase(string)
  string.tr(CASES[:upcase], CASES[:downcase]).downcase
end

#unaccented(string) ⇒ Object



49
50
51
# File 'lib/string_ext.rb', line 49

def unaccented(string)
  string.tr(UNACCENT_REPLACEMENTS[:accented], UNACCENT_REPLACEMENTS[:unaccented])
end

#upcase(string) ⇒ Object



41
42
43
# File 'lib/string_ext.rb', line 41

def upcase(string)
  string.tr(CASES[:downcase], CASES[:upcase]).upcase
end