/** * @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); }
/** * 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; }