original_string: private function _parseTags($tags)
          {
              if(count($tags) > 0)
              {   
  //              loop through the tags
                  foreach($tags as $key=>$tag)
                  {   
  //                  if a tag is delayed, it is rendered after everything else and it's has to be re parsed.
                      if(isset($tag['attributes']) === true && isset($tag['attributes']->delayed) === true && $tag['attributes']->delayed === 'true')
                      {
                          continue;
                      }
  //                  check for buried preserved tags, so they can be replaced.
  //                  NOTE: this only works with no collected tags. Collected tags are a massive pain in the rectum.
                      if(($has_buried = preg_match_all('!------@@%([0-9\-]+)%@@------!', $tag['content'], $info)) > 0)
                      {   
                          $containers = $info[0];
                          $indexs = $info[1];
                          $replacements = array();
                          foreach ($indexs as $key2=>$index)
                          {
                              $index_parts = explode('-', $index);
                              $tag_index = array_pop($index_parts);
                              if(isset($tags[$tag_index]['parsed']) === true)
                              {
                                  $replacements[$key2] = $tags[$tag_index]['parsed'];
                              }
                              else
                              {   
                                  if(isset($tags[$tag_index]['block']) === true)
                                  {
                                      $block = preg_replace('/ delayed="true"/', '', $tags[$tag_index]['block'], 1);
                                      if(isset($tag['block']) === true)
                                      {
                                          $tag['block'] = str_replace($containers[$key2], $block, $tag['block']); 
                                      }
                                      $tag['content'] = str_replace($containers[$key2], $block, $tag['content']); 
                                  }
                              }
                          }
                          $tags[$key]['buried_source_markers'] = $tag['buried_source_markers'] = $containers;
                      }
  
  //                  if the tag is a nocahe tag then the block must be replaced as is for later processing
                      if($tag['name'] === 'nocache')
                      {
                          array_push(self::$nocache_tags, $tag);
                          $tags[$key]['parsed'] = $tag['source_marker'];
  //                      $tags[$key]['parsed'] = $tag['block'];
                      }
  //                  if the tag is just plain text then just shove the content back into the parsed as it doesn't require processing
                      else if($tag['name'] === '___text')
                      {
                          $tags[$key]['parsed'] = $tag['content'];
                      }
  //                  otherwise we have a tag and must post process
                      else
                      {   
                          $tags[$key]['parsed'] = $this->_parseTag($tag);
                      }
  //                  update any buried tags within the parsed content
                      $tags[$key]['parsed'] = $has_buried > 0 ? str_replace($containers, $replacements, $tags[$key]['parsed']) : $tags[$key]['parsed'];
                  }
  // //              if there are items within the nocache elements, parse the contents to pull them out
  //                 $tagname = $this->_options['tag_name'];
  //                 if(substr_count($tags[$key]['parsed'], self::$tag_open.$tagname.':') > substr_count($tags[$key]['parsed'], self::$tag_open.$tagname.':nocache'))
  //                 {
  //                     $tags[$key]['parsed'] = $this->parse($tags[$key]['parsed'], true, true);
  // //                  $tags[$key]['parsed'] = $this->_processTags($tags[$key]['parsed'], true);
  //                 }
                  
  //                 Debug::info($tags[$key]);
                  
                  return $tags[$key]['parsed'];
              }
              return false;
          }
code: private function _parseTags($tags)
          {
              if(count($tags) > 0)
              {   
  //              loop through the tags
                  foreach($tags as $key=>$tag)
                  {   
  //                  if a tag is delayed, it is rendered after everything else and it's has to be re parsed.
                      if(isset($tag['attributes']) === true && isset($tag['attributes']->delayed) === true && $tag['attributes']->delayed === 'true')
                      {
                          continue;
                      }
  //                  check for buried preserved tags, so they can be replaced.
  //                  NOTE: this only works with no collected tags. Collected tags are a massive pain in the rectum.
                      if(($has_buried = preg_match_all('!------@@%([0-9\-]+)%@@------!', $tag['content'], $info)) > 0)
                      {   
                          $containers = $info[0];
                          $indexs = $info[1];
                          $replacements = array();
                          foreach ($indexs as $key2=>$index)
                          {
                              $index_parts = explode('-', $index);
                              $tag_index = array_pop($index_parts);
                              if(isset($tags[$tag_index]['parsed']) === true)
                              {
                                  $replacements[$key2] = $tags[$tag_index]['parsed'];
                              }
                              else
                              {   
                                  if(isset($tags[$tag_index]['block']) === true)
                                  {
                                      $block = preg_replace('/ delayed="true"/', '', $tags[$tag_index]['block'], 1);
                                      if(isset($tag['block']) === true)
                                      {
                                          $tag['block'] = str_replace($containers[$key2], $block, $tag['block']); 
                                      }
                                      $tag['content'] = str_replace($containers[$key2], $block, $tag['content']); 
                                  }
                              }
                          }
                          $tags[$key]['buried_source_markers'] = $tag['buried_source_markers'] = $containers;
                      }
  
  //                  if the tag is a nocahe tag then the block must be replaced as is for later processing
                      if($tag['name'] === 'nocache')
                      {
                          array_push(self::$nocache_tags, $tag);
                          $tags[$key]['parsed'] = $tag['source_marker'];
  //                      $tags[$key]['parsed'] = $tag['block'];
                      }
  //                  if the tag is just plain text then just shove the content back into the parsed as it doesn't require processing
                      else if($tag['name'] === '___text')
                      {
                          $tags[$key]['parsed'] = $tag['content'];
                      }
  //                  otherwise we have a tag and must post process
                      else
                      {   
                          $tags[$key]['parsed'] = $this->_parseTag($tag);
                      }
  //                  update any buried tags within the parsed content
                      $tags[$key]['parsed'] = $has_buried > 0 ? str_replace($containers, $replacements, $tags[$key]['parsed']) : $tags[$key]['parsed'];
                  }
  // //              if there are items within the nocache elements, parse the contents to pull them out
  //                 $tagname = $this->_options['tag_name'];
  //                 if(substr_count($tags[$key]['parsed'], self::$tag_open.$tagname.':') > substr_count($tags[$key]['parsed'], self::$tag_open.$tagname.':nocache'))
  //                 {
  //                     $tags[$key]['parsed'] = $this->parse($tags[$key]['parsed'], true, true);
  // //                  $tags[$key]['parsed'] = $this->_processTags($tags[$key]['parsed'], true);
  //                 }
                  
  //                 Debug::info($tags[$key]);
                  
                  return $tags[$key]['parsed'];
              }
              return false;
          }
code_tokens: private function _parseTags ( $ tags ) { if ( count ( $ tags ) > 0 ) { //              loop through the tags foreach ( $ tags as $ key => $ tag ) { //                  if a tag is delayed, it is rendered after everything else and it's has to be re parsed. if ( isset ( $ tag [ 'attributes' ] ) === true && isset ( $ tag [ 'attributes' ] -> delayed ) === true && $ tag [ 'attributes' ] -> delayed === 'true' ) { continue ; } //                  check for buried preserved tags, so they can be replaced. //                  NOTE: this only works with no collected tags. Collected tags are a massive pain in the rectum. if ( ( $ has_buried = preg_match_all ( '!------@@%([0-9\-]+)%@@------!' , $ tag [ 'content' ] , $ info ) ) > 0 ) { $ containers = $ info [ 0 ] ; $ indexs = $ info [ 1 ] ; $ replacements = array ( ) ; foreach ( $ indexs as $ key2 => $ index ) { $ index_parts = explode ( '-' , $ index ) ; $ tag_index = array_pop ( $ index_parts ) ; if ( isset ( $ tags [ $ tag_index ] [ 'parsed' ] ) === true ) { $ replacements [ $ key2 ] = $ tags [ $ tag_index ] [ 'parsed' ] ; } else { if ( isset ( $ tags [ $ tag_index ] [ 'block' ] ) === true ) { $ block = preg_replace ( '/ delayed="true"/' , '' , $ tags [ $ tag_index ] [ 'block' ] , 1 ) ; if ( isset ( $ tag [ 'block' ] ) === true ) { $ tag [ 'block' ] = str_replace ( $ containers [ $ key2 ] , $ block , $ tag [ 'block' ] ) ; } $ tag [ 'content' ] = str_replace ( $ containers [ $ key2 ] , $ block , $ tag [ 'content' ] ) ; } } } $ tags [ $ key ] [ 'buried_source_markers' ] = $ tag [ 'buried_source_markers' ] = $ containers ; } //                  if the tag is a nocahe tag then the block must be replaced as is for later processing if ( $ tag [ 'name' ] === 'nocache' ) { array_push ( self :: $ nocache_tags , $ tag ) ; $ tags [ $ key ] [ 'parsed' ] = $ tag [ 'source_marker' ] ; //                      $tags[$key]['parsed'] = $tag['block']; } //                  if the tag is just plain text then just shove the content back into the parsed as it doesn't require processing else if ( $ tag [ 'name' ] === '___text' ) { $ tags [ $ key ] [ 'parsed' ] = $ tag [ 'content' ] ; } //                  otherwise we have a tag and must post process else { $ tags [ $ key ] [ 'parsed' ] = $ this -> _parseTag ( $ tag ) ; } //                  update any buried tags within the parsed content $ tags [ $ key ] [ 'parsed' ] = $ has_buried > 0 ? str_replace ( $ containers , $ replacements , $ tags [ $ key ] [ 'parsed' ] ) : $ tags [ $ key ] [ 'parsed' ] ; } // //              if there are items within the nocache elements, parse the contents to pull them out //                 $tagname = $this->_options['tag_name']; //                 if(substr_count($tags[$key]['parsed'], self::$tag_open.$tagname.':') > substr_count($tags[$key]['parsed'], self::$tag_open.$tagname.':nocache')) //                 { //                     $tags[$key]['parsed'] = $this->parse($tags[$key]['parsed'], true, true); // //                  $tags[$key]['parsed'] = $this->_processTags($tags[$key]['parsed'], true); //                 } //                 Debug::info($tags[$key]); return $ tags [ $ key ] [ 'parsed' ] ; } return false ; }
docstring: Loops and parses the found custom tags.
  @access private
  @param array $tags An array of found custom tag data.
  @return mixed|string|boolean Returns false if there are no tags, string otherwise.
docstring_tokens: Loops and parses the found custom tags .