Commits

Vasiliy Toporov  committed 15ddaad

Updated tests and slugify method in Jobeet Utils

  • Participants
  • Parent commits dface90

Comments (0)

Files changed (2)

File src/Ens/JobeetBundle/Tests/Utils/JobeetTest.php

         $this->assertEquals('paris-france', Jobeet::slugify('paris,france'));
         $this->assertEquals('sensio', Jobeet::slugify('  sensio'));
         $this->assertEquals('sensio', Jobeet::slugify('sensio  '));
+        $this->assertEquals('n-a', Jobeet::slugify(''));
+        $this->assertEquals('n-a', Jobeet::slugify(' - '));
+        $this->assertEquals('developpeur-web', Jobeet::slugify('Développeur Web'));
     }
 }

File src/Ens/JobeetBundle/Utils/Jobeet.php

 class Jobeet
 {
     static public function slugify($text)
-    {
-        // replace all non letters or digits by -
-        $text = preg_replace('/\W+/', '-', $text);
- 
-        // trim and lowercase
-        $text = strtolower(trim($text, '-'));
+    {        
+        // replace non letter or digits by -
+        $text = preg_replace('#[^\\pL\d]+#u', '-', $text);
+
+        // trim
+        $text = trim($text, '-');
+
+        // transliterate
+        if (function_exists('iconv'))
+        {
+            $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
+        }
+
+        // lowercase
+        $text = strtolower($text);
+
+        // remove unwanted characters
+        $text = preg_replace('#[^-\w]+#', '', $text);
+        
+        if (empty($text))
+        {
+            return 'n-a';
+        }
  
         return $text;
     }