Ejemplo n.º 1
0
 /**
  * @param string $contents
  *
  * @return File
  */
 public function build($contents)
 {
     $file = new File($this->codeFactory->buildNamespace());
     $nodes = $this->PHPParser->parse($contents);
     $this->parser->parse($nodes, $file);
     return $file;
 }
Ejemplo n.º 2
0
 /**
  * Handles classes
  */
 function it_handles_final_classes(PHPNamespace $namespace, CodeFactoryContract $codeFactory, PHPClass $class)
 {
     $classNode = new Class_('Foo', ['type' => Class_::MODIFIER_FINAL]);
     $codeFactory->buildClass('Foo', PHPClass::IS_FINAL)->willReturn($class)->shouldBeCalled();
     $namespace->addClass($class)->shouldBeCalled();
     $this->parse([$classNode], $namespace);
 }
Ejemplo n.º 3
0
 /**
  * Build a file
  */
 function it_build_a_file(CodeFactoryContract $codeFactory, PHPNamespace $namespace, Parser $PHPParser, ParserContract $parser)
 {
     $codeFactory->buildNamespace()->willReturn($namespace)->shouldBeCalled();
     $PHPParser->parse('foo')->willReturn([]);
     $file = $this->build('foo');
     $file->shouldBeAnInstanceOf('FileModifier\\File\\File');
     $parser->parse([], $file)->shouldHaveBeenCalled();
 }
Ejemplo n.º 4
0
 /**
  * @param Class_       $node
  * @param PHPNamespace $target
  */
 public function handleClass(Class_ $node, PHPNamespace $target)
 {
     $name = $node->name;
     $modifiers = 0;
     $modifiers |= $node->isAbstract() ? PHPClass::IS_ABSTRACT : 0;
     $modifiers |= $node->isFinal() ? PHPClass::IS_FINAL : 0;
     $class = $this->codeFactory->buildClass($name, $modifiers);
     $target->addClass($class);
     $this->parse($node->stmts, $class);
 }
Ejemplo n.º 5
0
 /**
  * Add properties
  */
 function it_add_properties(CodeFactoryContract $factory, PHPProperty $property)
 {
     $factory->buildProperty($name = 'foo', $modifiers = 'bar')->willReturn($property)->shouldBeCalled();
     $this->property($name, $modifiers)->shouldReturn($this);
     $this->getProperties()->shouldBe([$property]);
 }
Ejemplo n.º 6
0
 /**
  * Add a property to the class
  *
  * @param string $name
  * @param int    $modifiers
  *
  * @return $this
  */
 public function property($name, $modifiers = 0)
 {
     $this->properties[] = $this->codeFactory->buildProperty($name, $modifiers);
     return $this;
 }