Example #1
0
 /** @test */
 public function itIsExpectedThatIt()
 {
     $res = new ImportResolver();
     $res->add('\\Lunar\\Foo as FooAlias');
     $this->assertSame('FooAlias', $res->getAlias('\\Lunar\\Foo as FooAlias'));
     $this->assertSame('Lunar\\Foo as FooAlias', $res->getImport('\\Lunar\\Foo as FooAlias'));
     $this->assertSame('Lunar\\Bar as BarAlias', $res->getImport('\\Lunar\\Bar as BarAlias'));
 }
 /**
  * completeTraitList
  *
  * @param WriterInterface $writer
  * @param ImportResolver $resolver
  *
  * @return void
  */
 protected function completeTraitList(WriterInterface $writer, ImportResolver $resolver)
 {
     $useRpl = [];
     $cflRpl = [];
     $replUse = isset($this->replacements['trait_use_as']);
     $replCfl = isset($this->replacements['trait_conflict']);
     foreach ($this->traits as $trait) {
         if ($replUse) {
             $useRpl = array_merge($useRpl, array_filter($this->replacements['trait_use_as'], function ($def) use($trait) {
                 return AbstractWriter::trimNs($trait) === AbstractWriter::trimNs($def[0]);
             }));
         }
         if ($replCfl) {
             $cflRpl = array_merge($cflRpl, array_filter($this->replacements['trait_conflict'], function ($def) use($trait, $resolver) {
                 // conflicting trait exists:
                 $cflExists = false;
                 foreach ($this->traits as $strait) {
                     if ($clfExists = AbstractWriter::trimNs($strait) === AbstractWriter::trimNs($def[1])) {
                         break;
                     }
                 }
                 return $clfExists && AbstractWriter::trimNs($trait) === AbstractWriter::trimNs($def[0]);
             }));
         }
     }
     if (empty($useRpl) && empty($cflRpl)) {
         $writer->appendln(';');
         return;
     }
     $writer->appendln(' {')->indent();
     foreach ($useRpl as $urpl) {
         list($trait, $method, $replacement, $visibility) = $urpl;
         $this->writeUseReplacement($writer, $resolver->getAlias($trait), $method, $replacement, $visibility);
     }
     foreach ($cflRpl as $crpl) {
         list($trait, $conflict, $method) = $crpl;
         $this->writeConflictReplacement($writer, $resolver->getAlias($trait), $method, $resolver->getAlias($conflict));
     }
     $writer->outdent()->writeln('}');
 }
Example #3
0
 /**
  * getUseStatements
  *
  * @param Writer $writer
  * @param bool $newLine
  *
  * @return void
  */
 protected function writeUseStatements(WriterInterface $writer, ImportResolver $resolver, $newLine = false)
 {
     $uses = [];
     false !== $newLine && $writer->newline();
     foreach (array_unique($this->getImports()) as $use) {
         if ($this->inNamespace($use) && !$resolver->hasAlias($use)) {
             continue;
         }
         $uses[] = $resolver->getImport($use);
     }
     if (is_callable($this->usesort)) {
         usort($uses, $this->usesort);
     } else {
         natsort($uses);
     }
     foreach ($uses as $u) {
         $writer->writeln(sprintf('use %s;', $u));
     }
 }