# encoding: utf-8

# Generates a slug. This is annoying beacuse it's duplicating what the javascript 
# does, but on the other hand slugs are never matched so it's okay if they differ
# a little.
module Slug

  def self.for(string)
    str = string.dup.strip.downcase
    
    # The characters we want to replace with a hyphen
    str.tr!("ยท/_,:;.", "\-")

    # Convert to ASCII or remove if transliteration is unknown.
    str = ActiveSupport::Inflector.transliterate(str, '')
    
    # Remove everything except alphanumberic, space, and hyphen characters.
    str.gsub!(/[^a-z0-9 -]/, '')
    
    # Replace multiple spaces with one hyphen.
    str.gsub!(/\s+/, '-')
    
    # Replace multiple hyphens with one hyphen.
    str.gsub!(/\-+/, '-')
    
    # Remove leading and trailing hyphens
    str.gsub!(/^-|-$/, '')

    str
  end

end