PhpSchool\CliMenu\MenuItem\AsciiArtItem::getRows PHP Метод

getRows() публичный Метод

The output text for the item
public getRows ( MenuStyle $style, boolean $selected = false ) : array
$style PhpSchool\CliMenu\MenuStyle
$selected boolean
Результат array
    public function getRows(MenuStyle $style, $selected = false)
    {
        return array_map(function ($row) use($style) {
            $length = mb_strlen($row);
            $padding = $style->getContentWidth() - $length;
            switch ($this->position) {
                case self::POSITION_LEFT:
                    return $row;
                    break;
                case self::POSITION_RIGHT:
                    $row = rtrim($row);
                    $padding = $padding - ($this->artLength - mb_strlen($row));
                    $row = sprintf('%s%s', str_repeat(' ', $padding), $row);
                    break;
                case self::POSITION_CENTER:
                default:
                    $row = rtrim($row);
                    $padding = $padding - ($this->artLength - mb_strlen($row));
                    $left = ceil($padding / 2);
                    $right = $padding - $left;
                    $row = sprintf('%s%s%s', str_repeat(' ', $left), $row, str_repeat(' ', $right));
                    break;
            }
            return $row;
        }, explode("\n", $this->text));
    }

Usage Example

Пример #1
0
 public function testGetRowsCenterAlignedWithOddWidth()
 {
     $menuStyle = $this->getMockBuilder(MenuStyle::class)->disableOriginalConstructor()->getMock();
     $menuStyle->expects($this->any())->method('getContentWidth')->will($this->returnValue(11));
     $item = new AsciiArtItem("//\n//", AsciiArtItem::POSITION_CENTER);
     $this->assertEquals(["     //    ", "     //    "], $item->getRows($menuStyle));
 }