Example #1
0
 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;
 }
 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']);
 }