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