/**
  * @dataProvider getReaderProvider
  */
 public function testGetReader($input, $expected, $comment)
 {
     $factory = new LU_ReaderFactory();
     $reader = $factory->getReader($input);
     $observed = get_class($reader);
     $this->assertEquals($expected, $observed, $comment);
 }
Example #2
0
 /**
  * Parses translations from given list of files.
  *
  * @param LU_ReaderFactory $readerFactory Factory to construct parsers.
  * @param array $files List of files with their contents as array values.
  * @return array List of translations indexed by language code.
  */
 public function readMessages(LU_ReaderFactory $readerFactory, array $files)
 {
     $messages = array();
     foreach ($files as $filename => $contents) {
         $reader = $readerFactory->getReader($filename);
         try {
             $parsed = $reader->parse($contents);
         } catch (Exception $e) {
             trigger_error(__METHOD__ . ": Unable to parse messages from {$filename}", E_USER_WARNING);
             continue;
         }
         foreach ($parsed as $code => $langMessages) {
             if (!isset($messages[$code])) {
                 $messages[$code] = array();
             }
             $messages[$code] = array_merge($messages[$code], $langMessages);
         }
         $c = array_sum(array_map('count', $parsed));
         // Useful for debugging, maybe create interface to pass this to the script?
         #echo "$filename with " . get_class( $reader ) . " and $c\n";
     }
     return $messages;
 }