public function testParse() { $parser = new BlockSignatureParser(); $result = $parser->parse(' block'); $this->assertEquals('block', $result['name']); $this->assertEquals(null, $result['param']); $result = $parser->parse(' block=param'); $this->assertEquals('block', $result['name']); $this->assertEquals('param', $result['param']); $result = $parser->parse(' block =param'); $this->assertEquals('block', $result['name']); $this->assertEquals('param', $result['param']); $result = $parser->parse(' block= param'); $this->assertEquals('block', $result['name']); $this->assertEquals('param', $result['param']); $result = $parser->parse(' = param'); $this->assertEquals(null, $result['name']); $this->assertEquals('param', $result['param']); }
protected function getBlock() { if (!$this->testCurrentString('[[')) { throw new \Exception('Block start expected!'); } $this->nextChar(); $this->nextChar(); $blockSignature = $this->getBlockSignature(); $block = $this->blockSignatureParser->parse($blockSignature); $position = $this->getNextNotWhiteSpacePosition($this->position); if ($this->testString($position, '{{')) { $this->skipWhiteSpace(); $content = $this->getBlockContent(); // todo: block can be parsed in one pass $clone = new self($this->blockSignatureParser); $result = $clone->parse($content); $block['markup'] = $result; } return $block; }