# coding: utf-8
#  author  Tomasz Sobczak
#  www     http://tomaszsobczak.com
#          http://blog.tomaszsobczak.com
#          http://code.tomaszsobczak.com
#  source  http://code.google.com/p/tomaszsobczak

class String

  def permalink
    unpretty2preety     = {
      'ä' => 'ae',  'ö' => 'oe',  'ü' => 'ue',  'Ä' => 'Ae',  'Ö' => 'Oe',  'Ü' => 'Ue',  'ß' => 'ss',
                        'ą' => 'a',   'Ą' => 'A',   'ć' => 'c',   'Ć' => 'C',   'ę' => 'e',   'Ę' => 'E',   'ł' => 'l',
                        'Ł' => 'L',   'ń' => 'n',   'Ń' => 'N',   'ó' => 'o',   'Ó' => 'O',   'ś' => 's',   'Ś' => 'S',
                        'ź' => 'z',   'Ź' => 'Z',   'ż' => 'z',   'Ż' => 'Z',   'Š' => 'S',   'Ž' => 'Z',   'š' => 's',
                        'ž' => 'z',   'Ÿ' => 'Y',   'À' => 'A',   'Á' => 'A',   'Â' => 'A',   'Ã' => 'A',   'Ä' => 'A',
                        'Å' => 'A',   'Ç' => 'C',   'È' => 'E',   'É' => 'E',   'Ê' => 'E',   'Ë' => 'E',   'Ì' => 'I',
                        'Í' => 'I',   'Î' => 'I',   'Ï' => 'I',   'Ñ' => 'N',   'Ò' => 'O',   'Ó' => 'O',   'Ô' => 'O',
                        'Õ' => 'O',   'Ö' => 'O',   'Ø' => 'O',   'Ù' => 'U',   'Ú' => 'U',   'Û' => 'U',   'Ü' => 'U',
                        'Ý' => 'Y',   'à' => 'a',   'á' => 'a',   'â' => 'a',   'ã' => 'a',   'ä' => 'a',   'å' => 'a',
                        'ç' => 'c',   'è' => 'e',   'é' => 'e',   'ê' => 'e',   'ë' => 'e',   'ì' => 'i',   'í' => 'i',
                        'î' => 'i',   'ï' => 'i',   'ñ' => 'n',   'ò' => 'o',   'ó' => 'o',   'ô' => 'o',   'õ' => 'o',
                        'ö' => 'o',   'ø' => 'o',   'ù' => 'u',   'ú' => 'u',   'û' => 'u',   'ü' => 'u',   'ý' => 'y',
                        'ÿ' => 'y',   'Þ' => 'TH',  'þ' => 'th',  'Ð' => 'DH',  'ð' => 'dh',  'ß' => 'ss',  'Œ' => 'OE',
                        'œ' => 'oe',  'Æ' => 'AE',  'æ' => 'ae',  'µ' => 'u'
                }

    unpretty2preety.inject(self) { |memo, args| memo.gsub(*args) }.gsub(/\W/, '-').gsub(/--/, '-').gsub(/(^-|-$)/, '').downcase
  end

end
