protected function resolveTokens(TokenCollection $tokens, XrefTokenResolver $xrefTokenResolver)
 {
     if (!$xrefTokenResolver->hasTokenResolver()) {
         throw new \Exception('No token resolver found for Xref token resolver.');
     }
     $tokenResolver = $xrefTokenResolver->getTokenResolver();
     $hasValues = False;
     if ($tokenResolver instanceof RegisteredTokenResolver) {
         $hasValues = $tokenResolver->hasRegisteredTokenValues();
     }
     if ($tokenResolver instanceof ScopeTokenResolver) {
         $hasValues = $tokenResolver->hasScope();
     }
     if (!$hasValues) {
         if ($xrefTokenResolver->hasXref()) {
             $xref = $xrefTokenResolver->getXref();
             if (!$xref->isResolved()) {
                 $treeCompiler = new TreeCompiler();
                 $compiledValues = $treeCompiler->compileXref($xref);
                 $xref->setData($compiledValues);
             }
             $values = $xref->getData();
         } else {
             $values = $xrefTokenResolver->getRegisteredTokenValues();
         }
         if ($tokenResolver instanceof RegisteredTokenResolver) {
             $tokenResolver->setRegisteredTokenValues($values);
         }
         if ($tokenResolver instanceof ScopeTokenResolver) {
             $tokenResolver->setScope($values);
         }
     }
     $xrefTokenResolver->resolve($tokens);
 }
 public function testOnDemandResolver()
 {
     $xrefDep1 = new Xref('file', '/dep1.json');
     $xrefDep1->setData(array('on-demand1' => '{{token1}}', 'on-demand2' => '{{token2}}'))->setResolved(true);
     $xrefMain = new Xref('file', '/main.json');
     $xrefMain->setData(array('include' => array('xref' => array('dep1' => array('type' => 'file', 'src' => '/dep1.json', 'resolve' => array(array('type' => 'on-demand', 'options' => array('token-prefix' => '{{', 'token-suffix' => '}}'), 'values' => array())))), 'main' => array('dep1'))))->setResolved(true);
     $treeCompiler = new TreeCompiler();
     $treeCompiler->getXrefs()->add($xrefDep1);
     $compiled = $treeCompiler->compileXref($xrefMain);
     $expected = array('on-demand1' => '{{token1}}', 'on-demand2' => '{{token2}}');
     $this->assertEquals($expected, $compiled);
     $this->onDemandTokenValues = array('token1' => 'ok1', 'token2' => 'ok2');
     $testListener = new TestEventListener(array($this, 'eventListenerCallback'));
     $eventManager = EventManager::getInstance();
     $eventManager->register($testListener);
     $this->assertTrue($eventManager->hasListeners());
     $compiled = $treeCompiler->compileXref($xrefMain);
     $expected = array('on-demand1' => 'ok1', 'on-demand2' => 'ok2');
     $this->assertEquals($expected, $compiled);
     $eventManager->remove($testListener);
     $this->assertFalse($eventManager->hasListeners());
 }
Example #3
0
 public function testTokensInValuesXrefLocation()
 {
     $xrefDep1 = new Xref('file', '/dep1.json');
     $xrefDep1->setData(array('content' => 'dep1.json', 'dep1version' => '{{version}}'))->setResolved(true);
     $xrefDep2 = new Xref('file', '/dep2.json');
     $xrefDep2->setData(array('include' => array('xref' => array('dep1' => array('type' => 'file', 'src' => '/dep1.json', 'resolve' => array(array('type' => 'registered', 'options' => array('token-prefix' => '{{', 'token-suffix' => '}}'), 'values-xref' => array('type' => 'file', 'src' => '/dep{{version}}.json'))))), 'main' => array('dep1'))))->setResolved(true);
     $xrefMain = new Xref('file', '/main.json');
     $xrefMain->setData(array('include' => array('xref' => array('dep2' => array('type' => 'file', 'src' => '/dep2.json', 'resolve' => array(array('type' => 'registered', 'options' => array('token-prefix' => '{{', 'token-suffix' => '}}'), 'values' => array('version' => '1'))))), 'main' => array('dep2'))))->setResolved(true);
     $treeCompiler = new TreeCompiler();
     $treeCompiler->getXrefs()->add($xrefDep1);
     $treeCompiler->getXrefs()->add($xrefDep2);
     $compiled = $treeCompiler->compileXref($xrefMain);
     $expected = array('content' => 'dep1.json', 'dep1version' => 1);
     $this->assertEquals($expected, $compiled);
 }