Example #1
0
 /**
  * Parse the tag according to given information
  *
  * @param context $context The context object of current tag
  * @param string $content The content for parse
  * @param array $wildcards Data in the wildcards
  * @param array $assigned Assigned data for rendering
  * @param array $shared Shared inter-exchange data for rendering
  * @param array $export Data will be outputted with render result.
  *
  * @return string Return the string of parsed data
  */
 public function parse(Context $context, $content, array &$wildcards, array $assigned, array &$shared, array &$export)
 {
     $data = array();
     $finalResult = '';
     if (!isset($wildcards[0], $wildcards[1])) {
         return '';
     }
     if (!isset($assigned['Loop'][$wildcards[0]]) || !is_array($assigned['Loop'][$wildcards[0]])) {
         return '';
     }
     foreach ($assigned['Loop'][$wildcards[0]] as $loopDatas) {
         $render = new Render($context->subs(), $content);
         foreach ($loopDatas as $dataKey => $dataVal) {
             $render->assign($dataKey, $dataVal);
         }
         $rendered = $render->renderSub();
         $finalResult .= ltrim($rendered[Render::RESULT_STRING]);
         if (!empty($rendered[Render::RESULT_DATA])) {
             $data[$wildcards[0]][] = $rendered[Render::RESULT_DATA];
         }
     }
     $export = $data;
     return rtrim($finalResult);
 }