/**
  * Retrieves a language definition name based on a file extension.
  *
  * Uses the contents of the <var>languages/filetypes</var> file to
  * guess the language definition name from a file name extension.
  * This file has to be generated using the
  * <var>collect-filetypes.php</var> script every time the language
  * definitions have been changed.
  *
  * @param string $ext the file name extension.
  * @return string The language definition name or <var>NULL</var>.
  */
 public static function nameFromExt($ext)
 {
     if (self::$_filetypes === null) {
         $ft_content = file(__DIR__ . '/Languages/filetypes', 1);
         foreach ($ft_content as $line) {
             list($name, $extensions) = explode(':', trim($line));
             $extensions = explode(',', $extensions);
             // Inverse lookup.
             foreach ($extensions as $extension) {
                 $ft_data[$extension] = $name;
             }
         }
         self::$_filetypes = $ft_data;
     }
     $ext = strtolower($ext);
     return array_key_exists($ext, self::$_filetypes) ? self::$_filetypes[strtolower($ext)] : null;
 }