Class: Slugify

Inherits:
Object
  • Object
show all
Defined in:
lib/slugify.rb

Constant Summary collapse

SLUGGY_MAPPING =
{
    '0' => '0',
    '1' => '1',
    '2' => '2',
    '3' => '3',
    '4' => '4',
    '5' => '5',
    '6' => '6',
    '7' => '7',
    '8' => '8',
    '9' => '9',
    '²' => '2',
    '³' => '3',
    '&' => '-',
    '(' => '-',
    '{' => '-',
    '}' => '-',
    ')' => '-',
    '-' => '-',
    '_' => '-',
    '[' => '-',
    ']' => '-',
    ',' => '-',
    '.' => '-',
    ';' => '-',
    ':' => '-',
    '=' => '-',
    '+' => '-',
    '<' => '-',
    '>' => '-',
    '~' => '-',
    'µ' => 'u',
    'A' => 'a',
    'B' => 'b',
    'C' => 'c',
    'D' => 'd',
    'E' => 'e',
    'F' => 'f',
    'G' => 'g',
    'H' => 'h',
    'I' => 'i',
    'J' => 'j',
    'K' => 'k',
    'L' => 'l',
    'M' => 'm',
    'N' => 'n',
    'O' => 'o',
    'P' => 'p',
    'Q' => 'q',
    'R' => 'r',
    'S' => 's',
    'T' => 't',
    'U' => 'u',
    'V' => 'v',
    'W' => 'w',
    'X' => 'x',
    'Y' => 'y',
    'Z' => 'z',
    '[' => '-',
    ']' => '-',
    '_' => '-',
    'a' => 'a',
    'b' => 'b',
    'c' => 'c',
    'd' => 'd',
    'e' => 'e',
    'f' => 'f',
    'g' => 'g',
    'h' => 'h',
    'i' => 'i',
    'j' => 'j',
    'k' => 'k',
    'l' => 'l',
    'm' => 'm',
    'n' => 'n',
    'o' => 'o',
    'p' => 'p',
    'q' => 'q',
    'r' => 'r',
    's' => 's',
    't' => 't',
    'u' => 'u',
    'v' => 'v',
    'w' => 'w',
    'x' => 'x',
    'y' => 'y',
    'z' => 'z',
    '{' => '-',
    '}' => '-',
    '~' => '-',
    'À' => 'a',
    'Á' => 'a',
    'Â' => 'a',
    'Ã' => 'a',
    'Ä' => 'a',
    'Å' => 'a',
    'Æ' => 'ae',
    'Ç' => 'c',
    'È' => 'e',
    'É' => 'e',
    'Ê' => 'e',
    'Ë' => 'e',
    'Ì' => 'i',
    'Í' => 'i',
    'Î' => 'i',
    'Ï' => 'i',
    'Ð' => 'd',
    'Ñ' => 'n',
    'Ò' => 'o',
    'Ó' => 'o',
    'Ô' => 'o',
    'Õ' => 'o',
    'Ö' => 'o',
    '×' => 'x',
    'Ø' => 'o',
    'Ù' => 'u',
    'Ú' => 'u',
    'Û' => 'u',
    'Ü' => 'u',
    'Ý' => 'y',
    'Þ' => 'th',
    'ß' => 'b',
    'à' => 'a',
    'á' => 'a',
    'â' => 'a',
    'ã' => 'a',
    'ä' => 'a',
    'å' => 'a',
    'æ' => 'ae',
    'ç' => 'c',
    'è' => 'e',
    'é' => 'e',
    'ê' => 'e',
    'ë' => 'e',
    'ì' => 'i',
    'í' => 'i',
    'î' => 'i',
    'ï' => 'i',
    'ð' => 'o',
    'ñ' => 'n',
    'ò' => 'o',
    'ó' => 'o',
    'ô' => 'o',
    'õ' => 'o',
    'ö' => 'o',
    'ø' => 'o',
    'ù' => 'u',
    'ú' => 'u',
    'û' => 'u',
    'ü' => 'u',
    'ý' => 'y',
    'þ' => 'th',
    'ÿ' => 'y',
    'Ā' => 'a',
    'ā' => 'a',
    'Ă' => 'a',
    'ă' => 'a',
    'Ą' => 'a',
    'ą' => 'a',
    'Ć' => 'c',
    'ć' => 'c',
    'Ĉ' => 'c',
    'ĉ' => 'c',
    'Ċ' => 'c',
    'ċ' => 'c',
    'Č' => 'c',
    'č' => 'c',
    'Ď' => 'd',
    'ď' => 'd',
    'Đ' => 'd',
    'đ' => 'd',
    'Ē' => 'e',
    'ē' => 'e',
    'Ĕ' => 'e',
    'ĕ' => 'e',
    'Ė' => 'e',
    'ė' => 'e',
    'Ę' => 'e',
    'ę' => 'e',
    'Ě' => 'e',
    'ě' => 'e',
    'Ĝ' => 'g',
    'ĝ' => 'g',
    'Ğ' => 'g',
    'ğ' => 'g',
    'Ġ' => 'g',
    'ġ' => 'g',
    'Ģ' => 'g',
    'ģ' => 'g',
    'Ĥ' => 'h',
    'ĥ' => 'h',
    'Ħ' => 'h',
    'ħ' => 'h',
    'Ĩ' => 'i',
    'ĩ' => 'i',
    'Ī' => 'i',
    'ī' => 'i',
    'Ĭ' => 'i',
    'ĭ' => 'i',
    'Į' => 'i',
    'į' => 'i',
    'İ' => 'l',
    'ı' => 'l',
    'IJ' => 'ij',
    'ij' => 'ij',
    'Ĵ' => 'j',
    'ĵ' => 'j',
    'Ķ' => 'k',
    'ķ' => 'k',
    'ĸ' => 'k',
    'Ĺ' => 'l',
    'ĺ' => 'l',
    'Ļ' => 'l',
    'ļ' => 'l',
    'Ľ' => 'l',
    'ľ' => 'l',
    'Ŀ' => 'l',
    'ŀ' => 'l',
    'Ł' => 'l',
    'ł' => 'l',
    'Ń' => 'n',
    'ń' => 'n',
    'Ņ' => 'n',
    'ņ' => 'n',
    'Ň' => 'n',
    'ň' => 'n',
    'ʼn' => 'n',
    'Ŋ' => 'n',
    'ŋ' => 'n',
    'Ō' => 'o',
    'ō' => 'o',
    'Ŏ' => 'o',
    'ŏ' => 'o',
    'Ő' => 'o',
    'ő' => 'o',
    'Œ' => 'oe',
    'œ' => 'oe',
    'Ŕ' => 'r',
    'ŕ' => 'r',
    'Ŗ' => 'r',
    'ŗ' => 'r',
    'Ř' => 'r',
    'ř' => 'r',
    'Ś' => 's',
    'ś' => 's',
    'Ŝ' => 's',
    'ŝ' => 's',
    'Ş' => 's',
    'ş' => 's',
    'Š' => 's',
    'š' => 's',
    'Ţ' => 't',
    'ţ' => 't',
    'Ť' => 't',
    'ť' => 't',
    'Ŧ' => 't',
    'ŧ' => 't',
    'Ũ' => 'u',
    'ũ' => 'u',
    'Ū' => 'u',
    'ū' => 'u',
    'Ŭ' => 'u',
    'ŭ' => 'u',
    'Ů' => 'u',
    'ů' => 'u',
    'Ű' => 'u',
    'ű' => 'u',
    'Ų' => 'u',
    'ų' => 'u',
    'Ŵ' => 'w',
    'ŵ' => 'w',
    'Ŷ' => 'y',
    'ŷ' => 'y',
    'Ÿ' => 'y',
    'Ź' => 'z',
    'ź' => 'z',
    'Ż' => 'z',
    'ż' => 'z',
    'Ž' => 'z',
    'ž' => 'z',
    'ſ' => 's',
    'ƀ' => 'b',
    'Ɓ' => 'b',
    'Ƅ' => 'b',
    'ƅ' => 'b',
    'Ƈ' => 'c',
    'ƈ' => 'c',
    'Ɖ' => 'd',
    'Ɗ' => 'd',
    'Ƌ' => 'nd',
    'ƌ' => 'nd',
    'Ɛ' => 'e',
    'Ƒ' => 'f',
    'ƒ' => 'f',
    'Ɠ' => 'g',
    'Ɩ' => 'i',
    'Ɨ' => 'i',
    'Ƙ' => 'k',
    'ƙ' => 'k',
    'Ɯ' => 'w',
    'Ɲ' => 'n',
    'ƞ' => 'n',
    'Ɵ' => 'o',
    'Ơ' => 'o',
    'ơ' => 'o',
    'Ƥ' => 'p',
    'ƥ' => 'p',
    'Ʀ' => 'r',
    'Ƨ' => 's',
    'ƨ' => 's',
    'Ʃ' => 's',
    'ƪ' => 't',
    'ƫ' => 't',
    'Ƭ' => 't',
    'ƭ' => 't',
    'Ʈ' => 't',
    'Ư' => 'u',
    'ư' => 'u',
    'Ʊ' => 'u',
    'Ʋ' => 'u',
    'Ƶ' => 'z',
    'ƶ' => 'z',
    'Ʒ' => 'z',
    'Ƽ' => 'q',
    'ƽ' => 'q',
    'DŽ' => 'dz',
    'Dž' => 'dz',
    'dž' => 'dz',
    'LJ' => 'lj',
    'Lj' => 'lj',
    'lj' => 'lj',
    'NJ' => 'nj',
    'Nj' => 'nj',
    'nj' => 'nj',
    'Ǎ' => 'a',
    'ǎ' => 'a',
    'Ǐ' => 'i',
    'ǐ' => 'i',
    'Ǒ' => 'o',
    'ǒ' => 'o',
    'Ǔ' => 'u',
    'ǔ' => 'u',
    'Ǖ' => 'u',
    'ǖ' => 'u',
    'Ǘ' => 'u',
    'ǘ' => 'u',
    'Ǚ' => 'u',
    'ǚ' => 'u',
    'Ǜ' => 'u',
    'ǜ' => 'u',
    'ǝ' => 'e',
    'Ǟ' => 'a',
    'ǟ' => 'a',
    'Ǡ' => 'a',
    'ǡ' => 'a',
    'Ǣ' => 'ae',
    'ǣ' => 'ae',
    'Ǥ' => 'g',
    'ǥ' => 'g',
    'Ǧ' => 'g',
    'ǧ' => 'g',
    'Ǩ' => 'k',
    'ǩ' => 'k',
    'Ǫ' => 'o',
    'ǫ' => 'o',
    'Ǭ' => 'o',
    'ǭ' => 'o',
    'ǰ' => 'j',
    'DZ' => 'dz',
    'Dz' => 'dz',
    'dz' => 'dz',
    'Ǵ' => 'g',
    'ǵ' => 'g',
    'Ǹ' => 'n',
    'ǹ' => 'n',
    'Ǻ' => 'a',
    'ǻ' => 'a',
    'Ǽ' => 'ae',
    'ǽ' => 'ae',
    'Ǿ' => 'o',
    'ǿ' => 'o',
    'Ȁ' => 'a',
    'ȁ' => 'a',
    'Ȃ' => 'a',
    'ȃ' => 'a',
    'Ȅ' => 'e',
    'ȅ' => 'e',
    'Ȇ' => 'e',
    'ȇ' => 'e',
    'Ȉ' => 'i',
    'ȉ' => 'i',
    'Ȋ' => 'i',
    'ȋ' => 'i',
    'Ȍ' => 'o',
    'ȍ' => 'o',
    'Ȏ' => 'o',
    'ȏ' => 'o',
    'Ȑ' => 'r',
    'ȑ' => 'r',
    'Ȓ' => 'r',
    'ȓ' => 'r',
    'Ȕ' => 'u',
    'ȕ' => 'u',
    'Ȗ' => 'u',
    'ȗ' => 'u',
    'Ș' => 's',
    'ș' => 's',
    'Ț' => 't',
    'ț' => 't',
    'Ȟ' => 'h',
    'ȟ' => 'h',
    'Ƞ' => 'n',
    'Ȥ' => 'z',
    'ȥ' => 'z',
    'Ȧ' => 'a',
    'ȧ' => 'a',
    'Ȩ' => 'e',
    'ȩ' => 'e',
    'Ȫ' => 'o',
    'ȫ' => 'o',
    'Ȭ' => 'o',
    'ȭ' => 'o',
    'Ȯ' => 'o',
    'ȯ' => 'o',
    'Ȱ' => 'o',
    'ȱ' => 'o',
    'Ȳ' => 'y',
    'ȳ' => 'y',
    'ȷ' => 'j',
    'ȸ' => 'db',
    'ȹ' => 'qp',
    'Ⱥ' => 'a',
    'Ȼ' => 'c',
    'ȼ' => 'c',
    'Ƚ' => 'l',
    'Ⱦ' => 'l',
    'ȿ' => 's',
    'ɀ' => 'z',
    'Ƀ' => 'b',
    'Ʉ' => 'u',
    'Ʌ' => 'v',
    'Ɇ' => 'e',
    'ɇ' => 'e',
    'Ɉ' => 'j',
    'ɉ' => 'j',
    'Ɋ' => 'q',
    'ɋ' => 'q',
    'Ɍ' => 'r',
    'ɍ' => 'r',
    'Ɏ' => 'y',
    'ɏ' => 'y',
    'ɑ' => 'a',
    'ɗ' => 'd',
    'ɠ' => 'g',
    'ɡ' => 'g',
    'ɢ' => 'g',
    'ɯ' => 'w',
    'ɱ' => 'm',
    'ɵ' => 'o',
    'ɶ' => 'oe',
    '' => 'a',
    '' => 'ae',
    '' => 'ae',
    '' => 'b',
    '' => 'c',
    '' => 'd',
    '' => 'd',
    '' => 'e',
    '' => 'j',
    '' => 'k',
    '' => 'l',
    '' => 'm',
    '' => 'n',
    '' => 'o',
    '' => 'a',
    '' => 'a',
    '' => 'b',
    '' => 'b',
    '' => 'b',
    '' => 'b',
    '' => 'b',
    '' => 'b',
    '' => 'c',
    '' => 'c',
    '' => 'd',
    '' => 'd',
    '' => 'd',
    '' => 'd',
    '' => 'd',
    '' => 'd',
    '' => 'd',
    '' => 'd',
    '' => 'd',
    '' => 'd',
    '' => 'e',
    '' => 'e',
    '' => 'e',
    '' => 'e',
    '' => 'e',
    '' => 'e',
    '' => 'e',
    '' => 'e',
    '' => 'e',
    '' => 'e',
    '' => 'f',
    '' => 'f',
    '' => 'g',
    '' => 'g',
    '' => 'h',
    '' => 'h',
    '' => 'h',
    '' => 'h',
    '' => 'h',
    '' => 'h',
    '' => 'h',
    '' => 'h',
    '' => 'h',
    '' => 'h',
    '' => 'i',
    '' => 'i',
    '' => 'i',
    '' => 'i',
    '' => 'k',
    '' => 'k',
    '' => 'k',
    '' => 'k',
    '' => 'k',
    '' => 'k',
    '' => 'l',
    '' => 'l',
    '' => 'l',
    '' => 'l',
    '' => 'l',
    '' => 'l',
    '' => 'l',
    '' => 'l',
    '' => 'm',
    'ḿ' => 'm',
    '' => 'm',
    '' => 'm',
    '' => 'm',
    '' => 'm',
    '' => 'n',
    '' => 'n',
    '' => 'n',
    '' => 'n',
    '' => 'n',
    '' => 'n',
    '' => 'n',
    '' => 'n',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'p',
    '' => 'p',
    '' => 'p',
    '' => 'p',
    '' => 'r',
    '' => 'r',
    '' => 'r',
    '' => 'r',
    '' => 'r',
    '' => 'r',
    '' => 'r',
    '' => 'r',
    '' => 's',
    '' => 's',
    '' => 's',
    '' => 's',
    '' => 's',
    '' => 's',
    '' => 's',
    '' => 's',
    '' => 's',
    '' => 's',
    '' => 't',
    '' => 't',
    '' => 't',
    '' => 't',
    '' => 't',
    '' => 't',
    '' => 't',
    '' => 't',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'v',
    '' => 'v',
    '' => 'v',
    'ṿ' => 'v',
    '' => 'w',
    '' => 'w',
    '' => 'w',
    '' => 'w',
    '' => 'w',
    '' => 'w',
    '' => 'w',
    '' => 'w',
    '' => 'w',
    '' => 'w',
    '' => 'x',
    '' => 'x',
    '' => 'x',
    '' => 'x',
    '' => 'y',
    '' => 'y',
    '' => 'z',
    '' => 'z',
    '' => 'z',
    '' => 'z',
    '' => 'z',
    '' => 'z',
    '' => 'h',
    '' => 't',
    '' => 'w',
    '' => 'y',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'a',
    '' => 'e',
    '' => 'e',
    '' => 'e',
    '' => 'e',
    '' => 'e',
    '' => 'e',
    '' => 'e',
    'ế' => 'e',
    '' => 'e',
    '' => 'e',
    '' => 'e',
    '' => 'e',
    '' => 'e',
    '' => 'e',
    '' => 'e',
    '' => 'e',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'o',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'u',
    '' => 'y',
    '' => 'y',
    '' => 'y',
    '' => 'y',
    '' => 'y',
    '' => 'y',
    '' => 'y',
    '' => 'y',
    '' => 'a',
    '' => 'e',
    '' => 'o',
    '' => 'x',
    '' => 'ac',
    '' => 'as',
    '' => 'c',
    '' => 'c',
    '' => 'c',
    '' => 'co',
    '' => 'cu',
    '' => 'f',
    '' => 'g',
    '' => 'h',
    '' => 'h',
    '' => 'h',
    '' => 'h',
    '' => 'h',
    '' => 'n',
    '' => 'p',
    '' => 'p',
    '' => 'q',
    '' => 'r',
    '' => 'r',
    '' => 'r',
    '' => 'px',
    '' => 'r',
    '' => 'sm',
    '' => 'tel',
    '' => 'tm',
    '' => 'z',
    '' => 'k',
    '' => 'a',
    '' => 'b',
    '' => 'e',
    '' => 'e',
    '' => '9',
    '' => '10',
    '' => '11',
    '' => '12',
    '' => '13',
    '' => '14',
    '' => '15',
    '' => '16',
    '' => '17',
    '' => '18',
    '' => '19',
    '' => '20',
    '' => 'a',
    '' => 'b',
    '' => 'c',
    '' => 'd',
    '' => 'e',
    '' => 'f',
    '' => 'g',
    '' => 'h',
    '' => 'i',
    '' => 'j',
    '' => 'k',
    '' => 'l',
    '' => 'm',
    '' => 'n',
    '' => 'o',
    '' => 'p',
    '' => 'q',
    '' => 'r',
    '' => 's',
    '' => 't',
    '' => 'u',
    '' => 'v',
    '' => 'w',
    '' => 'x',
    '' => 'y',
    '' => 'z',
    '' => 'a',
    '' => 'b',
    '' => 'c',
    '' => 'd',
    '' => 'e',
    '' => 'f',
    '' => 'g',
    '' => 'h',
    '' => 'i',
    '' => 'j',
    '' => 'k',
    '' => 'l',
    '' => 'm',
    '' => 'n',
    '' => 'o',
    '' => 'p',
    '' => 'q',
    '' => 'r',
    '' => 's',
    '' => 't',
    '' => 'u',
    '' => 'v',
    '' => 'w',
    '' => 'x',
    '' => 'y',
    '' => 'z',
    '' => 'a',
    '' => 'b',
    '' => 'c',
    '' => 'd',
    '' => 'e',
    '' => 'f',
    '' => 'g',
    '' => 'h',
    '' => 'i',
    '' => 'j',
    '' => 'k',
    '' => 'l',
    '' => 'm',
    '' => 'n',
    '' => 'o',
    '' => 'p',
    '' => 'q',
    '' => 'r',
    '' => 's',
    '' => 't',
    '' => 'u',
    '' => 'v',
    '' => 'w',
    '' => 'x',
    '' => 'y',
    '' => 'z',
    '' => '0',
    '' => 'f',
    '' => 's',
    '' => 'aa',
    '' => 'aa',
    '' => 'ao',
    '' => 'ao',
    '' => 'aj',
    '' => 'aj',
    '' => 'av',
    '' => 'av',
    '' => 'af',
    '' => 'af',
    '' => 'af',
    '' => 'af',
    '' => 'a',
    '' => 'b',
    '' => 'c',
    '' => 'd',
    '' => 'e',
    '' => 'f',
    '' => 'g',
    '' => 'h',
    '' => 'i',
    '' => 'j',
    '' => 'k',
    '' => 'l',
    '' => 'm',
    '' => 'n',
    '' => 'o',
    '' => 'p',
    '' => 'q',
    '' => 'r',
    '' => 's',
    '' => 't',
    '' => 'u',
    '' => 'v',
    '' => 'w',
    '' => 'x',
    '' => 'y',
    '' => 'z',
    '_' => '-',
    '' => 'a',
    '' => 'b',
    '' => 'c',
    '' => 'd',
    '' => 'e',
    '' => 'f',
    '' => 'g',
    '' => 'h',
    '' => 'i',
    '' => 'j',
    '' => 'k',
    '' => 'l',
    '' => 'm',
    '' => 'n',
    '' => 'o',
    '' => 'p',
    '' => 'q',
    '' => 'r',
    '' => 's',
    '' => 't',
    '' => 'u',
    '' => 'v',
    '' => 'w',
    '' => 'x',
    '' => 'y',
    '' => 'z',
    '' => '-',

    ' ' => '-'
}

Class Method Summary collapse

Class Method Details

.convert(str, trim = false) ⇒ Object



925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
# File 'lib/slugify.rb', line 925

def self.convert (str, trim = false)
    result = ''

    str.each_char do |kar|
        if SLUGGY_MAPPING.include?(kar)
            result << SLUGGY_MAPPING[kar]
        end
    end

    if trim
        tmp = result
        result = ""
        prefix = ""
        tmp.each_char do |kar|
            if kar == '-'
                prefix = "-"
            else
                prefix = '' if result == ""
                result << prefix + kar
                prefix = ''
            end
        end
    end

    result
end