public function render()
    {
        $output = [];

        // Top.
        if (count($this->rows) > 0) {
            $output[] = $this->renderLine();
        }

        // Headers.
        if (count($this->columns) > 0) {
            $line = [];
            $line[] = $this->charVertical;
            $columnNumber = 0;
            foreach ($this->columns as $index => $column) {
                $title = $column;
                if (isset($this->headers[$index])) {
                    $title = $this->headers[$index];
                }
                $line[] = $this->renderCell($columnNumber, $title, ' ', 'info');
                $line[] = $this->charVertical;
                $columnNumber++;
            }
            $output[] = implode('', $line);
        }

        // Body.
        if (count($this->rows) > 0) {

            // Middle.
            $output[] = $this->renderLine();

            // Rows.
            foreach ($this->rows as $row) {
                $output[] = $this->renderRow($row);
            }

            // Footer
            $output[] = $this->renderLine();
        }

        return implode("\n", $output);
    }