public function testProcessedShortcode()
 {
     $processor = new Processor(new RegexParser(), new HandlerContainer());
     $context = new ProcessorContext();
     $context->shortcode = new Shortcode('code', array('arg' => 'val'), 'content');
     $context->processor = $processor;
     $context->position = 20;
     $context->namePosition = array('code' => 10);
     $context->text = ' [code] ';
     $context->shortcodeText = '[code]';
     $context->textOffset = 1;
     $context->iterationNumber = 1;
     $context->recursionLevel = 0;
     $context->parent = null;
     $context->contentOffset = 19;
     $context->slashOffset = 21;
     $processed = ProcessedShortcode::createFromContext($context);
     $this->assertSame('code', $processed->getName());
     $this->assertSame(array('arg' => 'val'), $processed->getParameters());
     $this->assertSame('content', $processed->getContent());
     $this->assertSame(20, $processed->getPosition());
     $this->assertSame(10, $processed->getNamePosition());
     $this->assertSame(' [code] ', $processed->getText());
     $this->assertSame(1, $processed->getOffset());
     $this->assertSame('[code]', $processed->getShortcodeText());
     $this->assertSame(1, $processed->getIterationNumber());
     $this->assertSame(0, $processed->getRecursionLevel());
     $this->assertSame(null, $processed->getParent());
     $this->assertSame($processor, $processed->getProcessor());
     $this->assertSame(19, $processed->getContentOffset());
     $this->assertSame(21, $processed->getMarkerOffset());
 }
 public function testProcessedShortcodeParents()
 {
     $context = new ProcessorContext();
     $context->shortcode = new Shortcode('p1', array(), null);
     $context->parent = null;
     $context->namePosition = array('p1' => 0, 'p2' => 0, 'p3' => 0);
     $p1 = ProcessedShortcode::createFromContext($context);
     $context->shortcode = new Shortcode('p2', array(), null);
     $context->parent = $p1;
     $p2 = ProcessedShortcode::createFromContext($context);
     $context->shortcode = new Shortcode('p3', array(), null);
     $context->parent = $p2;
     $p3 = ProcessedShortcode::createFromContext($context);
     $this->assertSame('p3', $p3->getName());
     $this->assertSame('p2', $p3->getParent()->getName());
     $this->assertSame('p1', $p3->getParent()->getParent()->getName());
     $this->assertFalse($p1->hasAncestor('p3'));
     $this->assertFalse($p1->hasAncestor('p1'));
     $this->assertTrue($p2->hasAncestor('p1'));
     $this->assertFalse($p2->hasAncestor('p3'));
     $this->assertTrue($p3->hasAncestor('p1'));
     $this->assertTrue($p3->hasAncestor('p2'));
     $this->assertFalse($p3->hasAncestor('p4'));
 }
Exemple #3
0
 private function processHandler(ParsedShortcodeInterface $parsed, ProcessorContext $context, $handler)
 {
     $processed = ProcessedShortcode::createFromContext(clone $context);
     $processed = $this->processRecursion($processed, $context);
     return $handler ? call_user_func_array($handler, array($processed)) : substr_replace($parsed->getText(), $processed->getContent(), strrpos($parsed->getText(), $parsed->getContent()), mb_strlen($parsed->getContent()));
 }
 /**
  * [raw]any content [with] or [without /] shortcodes[/raw]
  *
  * @param ProcessedShortcode $shortcode
  *
  * @return string
  */
 public function __invoke(ProcessedShortcode $shortcode)
 {
     return $shortcode->getTextContent();
 }
Exemple #5
0
 private function processHandler(ParsedShortcodeInterface $parsed, ProcessorContext $context, $handler)
 {
     $processed = ProcessedShortcode::createFromContext(clone $context);
     $content = $this->processRecursion($processed, $context);
     $processed = $processed->withContent($content);
     if ($handler) {
         return call_user_func_array($handler, array($processed));
     }
     $state = $parsed->getText();
     $length = mb_strlen($processed->getTextContent(), 'utf-8');
     $offset = mb_strrpos($state, $processed->getTextContent(), 'utf-8');
     return mb_substr($state, 0, $offset, 'utf-8') . $processed->getContent() . mb_substr($state, $offset + $length, mb_strlen($state, 'utf-8'), 'utf-8');
 }