/**
  * Generate dictionary
  *
  * @param string $directory
  * @param string $outputFilename
  * @param bool $withContext
  * @throws \UnexpectedValueException
  * @return void
  */
 public function generate($directory, $outputFilename, $withContext = false)
 {
     $optionResolver = $this->optionResolverFactory->create($directory, $withContext);
     $parser = $this->getActualParser($withContext);
     $parser->parse($optionResolver->getOptions());
     $phraseList = $parser->getPhrases();
     if (!count($phraseList)) {
         throw new \UnexpectedValueException('No phrases found in the specified dictionary file.');
     }
     foreach ($phraseList as $phrase) {
         $this->getDictionaryWriter($outputFilename)->write($phrase);
     }
     $this->writer = null;
 }
 /**
  * @return array
  * @throws \RuntimeException
  */
 public function defaultLocaleDataProvider()
 {
     $parser = $this->prepareParser();
     $optionResolverFactory = new ResolverFactory();
     $optionResolver = $optionResolverFactory->create(BP, true);
     $parser->parse($optionResolver->getOptions());
     $defaultLocale = [];
     foreach ($parser->getPhrases() as $key => $phrase) {
         if (!$phrase->getContextType() || !$phrase->getContextValue()) {
             throw new \RuntimeException(sprintf('Missed context in row #%d.', $key + 1));
         }
         foreach ($phrase->getContextValue() as $context) {
             $phraseText = $this->eliminateSpecialChars($phrase->getPhrase());
             $phraseTranslation = $this->eliminateSpecialChars($phrase->getTranslation());
             $file = $this->buildFilePath($phrase, $context);
             $defaultLocale[$file]['file'] = $file;
             $defaultLocale[$file]['phrases'][$phraseText] = $phraseTranslation;
         }
     }
     return $defaultLocale;
 }
 /**
  * @expectedException \UnexpectedValueException
  * @expectedExceptionMessage No phrases found in the specified dictionary file.
  */
 public function testGenerateWithNoPhrases()
 {
     $baseDir = 'no_phrases';
     $outputFilename = 'no_file.csv';
     $filesOptions = ['file1', 'file2'];
     $optionResolver = $this->getMock('Magento\\Setup\\Module\\I18n\\Dictionary\\Options\\Resolver', [], [], '', false);
     $optionResolver->expects($this->once())->method('getOptions')->will($this->returnValue($filesOptions));
     $this->optionsResolverFactory->expects($this->once())->method('create')->with($this->equalTo($baseDir), $this->equalTo(true))->will($this->returnValue($optionResolver));
     $this->contextualParserMock->expects($this->once())->method('parse')->with($filesOptions);
     $this->contextualParserMock->expects($this->once())->method('getPhrases')->will($this->returnValue([]));
     $this->generator->generate($baseDir, $outputFilename, true);
 }