You are here

public function CollapseText::findLevels in Collapse Text 2.0.x

Same name and namespace in other branches
  1. 8 src/Plugin/Filter/CollapseText.php \Drupal\collapse_text\Plugin\Filter\CollapseText::findLevels()

Helper function to determine what the nesting structure is.

1 call to CollapseText::findLevels()
CollapseText::process in src/Plugin/Filter/CollapseText.php
Performs the filter processing.

File

src/Plugin/Filter/CollapseText.php, line 435

Class

CollapseText
Provides a filter to display Collapsible text blocks.

Namespace

Drupal\collapse_text\Plugin\Filter

Code

public function findLevels($tags, $options) {
  $levels = [];
  $curr_level = 0;
  foreach ($tags as $item) {

    // Determine whether this is an open or close tag.
    $type = 'unknown';
    if (substr($item[0], 0, 9) == '[collapse') {
      $type = 'start';
    }
    elseif (substr($item[0], 0, 10) == '[/collapse') {
      $type = 'end';
    }

    // The level of an open tag is incremented before we save its
    // information, while the level of a close tag is decremented after.
    if ($type == 'start') {
      $curr_level++;
    }
    $levels[] = [
      'type' => $type,
      'tag' => $item[0],
      'start' => $item[1],
      'end' => $item[1] + strlen($item[0]),
      'level' => $curr_level,
    ];
    if ($type == 'end') {
      $curr_level--;
    }
  }
  return $levels;
}