#!ruby -w

def frequency(text)
  def prepare_string(text)
    text.gsub(/[.,:;'"]/, '')
        .downcase
        .split(' ')
  end

  def sort_frequency_report(table)
    table.sort_by{ |k, v| v }
         .reverse
  end

  word_list = prepare_string(text)

  table = Hash.new

  for word in word_list
    if table.has_key?(word)
      table[word] += 1
    else
      table[word] = 1
    end
  end
  
  sort_frequency_report(table)
end

p frequency('В этом длинном,
             очень и очень длинном тексте
             проверим орфографию.')