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
}
VERSION =
'0.1.0'

Instance Method Summary collapse

Instance Method Details

#downcase(string) ⇒ Object



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

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

#unaccented(string) ⇒ Object



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

def unaccented(string)
  ACCENTS.inject(string) do |s, (char, cases)|
    s.tr(cases[:upcase], char).tr(cases[:downcase], char.downcase)
  end
end

#upcase(string) ⇒ Object



36
37
38
# File 'lib/string_ext.rb', line 36

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