Phrozn/Vendor/Extra/scss.inc.php
public function adjustAllChildren($block) {
        // flatten empty nested blocks
        $children = array();
        foreach ($block->children as $i => $child) {
            if (empty($child->lines) && empty($child->children)) {
                if (isset($block->children[$i + 1])) {
                    $block->children[$i + 1]->depth = $child->depth;
                }
                continue;
            }
            $children[] = $child;
        }

        $count = count($children);
        for ($i = 0; $i < $count; $i++) {
            $depth = $children[$i]->depth;
            $j = $i + 1;
            if (isset($children[$j]) && $depth < $children[$j]->depth) {
                $childDepth =  $children[$j]->depth;
                for (; $j < $count; $j++) {
                    if ($depth < $children[$j]->depth && $childDepth >= $children[$j]->depth) {
                        $children[$j]->depth = $depth + 1;
                    }
                }
            }
        }

        $block->children = $children;

        // make relative to parent
        foreach ($block->children as $child) {
            $this->adjustAllChildren($child);
            $child->depth = $child->depth - $block->depth;
        }
    }
public function adjustAllChildren($block) {
        // flatten empty nested blocks
        $children = array();
        foreach ($block->children as $i => $child) {
            if (empty($child->lines) && empty($child->children)) {
                if (isset($block->children[$i + 1])) {
                    $block->children[$i + 1]->depth = $child->depth;
                }
                continue;
            }
            $children[] = $child;
        }

        $count = count($children);
        for ($i = 0; $i < $count; $i++) {
            $depth = $children[$i]->depth;
            $j = $i + 1;
            if (isset($children[$j]) && $depth < $children[$j]->depth) {
                $childDepth =  $children[$j]->depth;
                for (; $j < $count; $j++) {
                    if ($depth < $children[$j]->depth && $childDepth >= $children[$j]->depth) {
                        $children[$j]->depth = $depth + 1;
                    }
                }
            }
        }

        $block->children = $children;

        // make relative to parent
        foreach ($block->children as $child) {
            $this->adjustAllChildren($child);
            $child->depth = $child->depth - $block->depth;
        }
    }
public function adjustAllChildren ( $ block ) { // flatten empty nested blocks $ children = array ( ) ; foreach ( $ block -> children as $ i => $ child ) { if ( empty ( $ child -> lines ) && empty ( $ child -> children ) ) { if ( isset ( $ block -> children [ $ i + 1 ] ) ) { $ block -> children [ $ i + 1 ] -> depth = $ child -> depth ; } continue ; } $ children [ ] = $ child ; } $ count = count ( $ children ) ; for ( $ i = 0 ; $ i < $ count ; $ i ++ ) { $ depth = $ children [ $ i ] -> depth ; $ j = $ i + 1 ; if ( isset ( $ children [ $ j ] ) && $ depth < $ children [ $ j ] -> depth ) { $ childDepth = $ children [ $ j ] -> depth ; for ( ; $ j < $ count ; $ j ++ ) { if ( $ depth < $ children [ $ j ] -> depth && $ childDepth >= $ children [ $ j ] -> depth ) { $ children [ $ j ] -> depth = $ depth + 1 ; } } } } $ block -> children = $ children ; // make relative to parent foreach ( $ block -> children as $ child ) { $ this -> adjustAllChildren ( $ child ) ; $ child -> depth = $ child -> depth - $ block -> depth ; } }
adjust the depths of all children, depth first
adjust the depths of all children depth first