public function setLayout($layout)
    {
        if (is_string($layout)) {
            $layout = constant('Gush\Helper\TableHelper::LAYOUT_'.strtoupper($layout));
        }

        switch ($layout) {
            case self::LAYOUT_BORDERLESS:
                $this->table->setStyle('borderless');
                break;

            case self::LAYOUT_COMPACT:
                $this->table->setStyle('compact');
                break;

            case self::LAYOUT_DEFAULT:
                $this->table->setStyle('default');
                break;

            case self::LAYOUT_GITHUB:
                $this->table->getStyle()
                    ->setPaddingChar(' ')
                    ->setHorizontalBorderChar(' ')
                    ->setVerticalBorderChar('|')
                    ->setCrossingChar(' ')
                    ->setCellHeaderFormat('<info>%s</info>')
                    ->setCellRowFormat('%s')
                    ->setCellRowContentFormat('%s')
                    ->setBorderFormat('%s')
                    ->setPadType(STR_PAD_RIGHT)
                ;
                break;

            default:
                throw new \InvalidArgumentException(sprintf('Invalid table layout "%s".', $layout));
        };

        return $this;
    }