module Vietslug::ClassMethods

Public Instance Methods

to_slug(str) click to toggle source
# File lib/vietslug.rb, line 5
def to_slug(str)
  str = str.to_s.strip.downcase
  accents = {
      %w[à á ạ ả ã â ầ ấ ậ ẩ ẫ ă ằ ắ ặ ẳ ẵ] => 'a',
      %w[è é ẹ ẻ ẽ ê ề ế ệ ể ễ] => 'e',
      %w[ì í ị ỉ ĩ] => 'i',
      %w[ò ó ọ ỏ õ ô ồ ố ộ ổ ỗ ơ ờ ớ ợ ở ỡ] => 'o',
      %w[ù ú ụ ủ ũ ư ừ ứ ự ử ữ] => 'u',
      %w[ỳ ý ỵ ỷ ỹ] => 'y',
      %w[đ] => 'd'
  }

  accents.each do |ac, rep|
    ac.each do |s|
      str = str.tr(s, rep)
    end
  end

  str = str.gsub(/[^a-zA-Z0-9 ]/, '')
  str = str.gsub(/[ ]+/, ' ')
  str.tr(' ', '-')
end