public function testProcessorParentContext() { $handlers = new HandlerContainer(); $handlers->add('outer', function (ProcessedShortcode $s) { $name = $s->getParent() ? $s->getParent()->getName() : 'root'; return $name . '[' . $s->getContent() . ']'; }); $handlers->addAlias('inner', 'outer'); $handlers->addAlias('level', 'outer'); $processor = new Processor(new RegexParser(), $handlers); $text = 'x [outer]a [inner]c [level]x[/level] d[/inner] b[/outer] y'; $result = 'x root[a outer[c inner[x] d] b] y'; $this->assertSame($result, $processor->process($text)); $this->assertSame($result . $result, $processor->process($text . $text)); }
public function testImmutableHandlerContainer() { $handlers = new HandlerContainer(); $handlers->add('code', function () { }); $handlers->addAlias('c', 'code'); $handlers = new ImmutableHandlerContainer($handlers); $this->assertNull($handlers->get('missing')); $this->assertNotNull($handlers->get('code')); $this->assertNotNull($handlers->get('c')); $defaultHandlers = new HandlerContainer(); $defaultHandlers->setDefault(function () { }); $defaultHandlers = new ImmutableHandlerContainer($defaultHandlers); $this->assertNotNull($defaultHandlers->get('missing')); }
public function addHandlerAlias($alias, $name) { $this->handlers->addAlias($alias, $name); return $this; }
public function testValidProcessAfterHandlerRemoval() { $handlers = new HandlerContainer(); $handlers->add('name', function (ShortcodeInterface $s) { return $s->getName(); }); $handlers->addAlias('n', 'name'); $processor = new Processor(new RegexParser(), $handlers); $this->assertSame('n', $processor->process('[n]')); $this->assertSame('name', $processor->process('[name]')); $handlers->remove('name'); $this->assertSame('n', $processor->process('[n]')); $this->assertSame('[name]', $processor->process('[name]')); }