cebe\markdown\block\TableTrait::consumeTable PHP Method

consumeTable() protected method

Consume lines for a table
protected consumeTable ( $lines, $current )
    protected function consumeTable($lines, $current)
    {
        // consume until newline
        $block = ['table', 'cols' => [], 'rows' => []];
        $beginsWithPipe = $lines[$current][0] === '|';
        for ($i = $current, $count = count($lines); $i < $count; $i++) {
            $line = rtrim($lines[$i]);
            // extract alignment from second line
            if ($i == $current + 1) {
                $cols = explode('|', trim($line, ' |'));
                foreach ($cols as $col) {
                    $col = trim($col);
                    if (empty($col)) {
                        $block['cols'][] = '';
                        continue;
                    }
                    $l = $col[0] === ':';
                    $r = substr($col, -1, 1) === ':';
                    if ($l && $r) {
                        $block['cols'][] = 'center';
                    } elseif ($l) {
                        $block['cols'][] = 'left';
                    } elseif ($r) {
                        $block['cols'][] = 'right';
                    } else {
                        $block['cols'][] = '';
                    }
                }
                continue;
            }
            if ($line === '' || $beginsWithPipe && $line[0] !== '|') {
                break;
            }
            if ($line[0] === '|') {
                $line = substr($line, 1);
            }
            if (substr($line, -1, 1) === '|' && (substr($line, -2, 2) !== '\\|' || substr($line, -3, 3) === '\\\\|')) {
                $line = substr($line, 0, -1);
            }
            $block['rows'][] = $line;
        }
        return [$block, --$i];
    }