Skip to content

Commit 577eeb8

Browse files
committed
Cleanup + add example
1 parent 0892ccd commit 577eeb8

File tree

3 files changed

+51
-32
lines changed

3 files changed

+51
-32
lines changed

examples/basic.php

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,20 @@
11
<?php
22

3-
use PhpSchool\CliMenu\Builder\SplitItemBuilder;
43
use PhpSchool\CliMenu\CliMenu;
54
use PhpSchool\CliMenu\Builder\CliMenuBuilder;
6-
use PhpSchool\CliMenu\MenuItem\SelectableItem;
7-
use PhpSchool\CliMenu\Style\SelectableStyle;
85

96
require_once(__DIR__ . '/../vendor/autoload.php');
107

118
$itemCallable = function (CliMenu $menu) {
129
echo $menu->getSelectedItem()->getText();
1310
};
1411

15-
class MyItem extends SelectableItem {
16-
17-
};
18-
19-
class MySelectableStyle extends SelectableStyle {
20-
21-
}
22-
23-
$myItem = new MyItem('YO', $itemCallable);
24-
$myItem2 = new MyItem('YO2', $itemCallable);
25-
2612
$menu = (new CliMenuBuilder)
27-
->registerItemStyle(MyItem::class, new MySelectableStyle())
28-
// ->modifyStyle(MySelectableStyle::class, function (MySelectableStyle $style) {
29-
// $style->setUnselectedMarker('[#]');
30-
// })
3113
->setTitle('Basic CLI Menu')
3214
->addItem('First Item', $itemCallable)
3315
->addItem('Second Item', $itemCallable)
3416
->addItem('Third Item', $itemCallable)
3517
->addLineBreak('-')
36-
->addMenuItem($myItem)
37-
->addMenuItem($myItem2)
38-
->addSubMenu('OPT', function (CliMenuBuilder $b) use ($myItem) {
39-
$b->addMenuItem($myItem);
40-
})
41-
->addSplitItem(function (SplitItemBuilder $b) use ($itemCallable, $myItem) {
42-
$b->addItem('FIRST SPLIT', $itemCallable);
43-
$b->addSubMenu('SUB', function (CliMenuBuilder $b) use ($myItem) {
44-
$b->addMenuItem($myItem);
45-
});
46-
$b->addMenuItem($myItem);
47-
})
4818
->build();
4919

5020
$menu->open();

examples/custom-item-register.php

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?php
2+
3+
use PhpSchool\CliMenu\Builder\SplitItemBuilder;
4+
use PhpSchool\CliMenu\CliMenu;
5+
use PhpSchool\CliMenu\Builder\CliMenuBuilder;
6+
use PhpSchool\CliMenu\MenuItem\SelectableItem;
7+
use PhpSchool\CliMenu\Style\SelectableStyle;
8+
9+
require_once(__DIR__ . '/../vendor/autoload.php');
10+
11+
$itemCallable = function (CliMenu $menu) {
12+
echo $menu->getSelectedItem()->getText();
13+
};
14+
15+
class MyItem extends SelectableItem {
16+
17+
};
18+
19+
class MySelectableStyle extends SelectableStyle {
20+
21+
}
22+
23+
$myItem = new MyItem('MY CUSTOM ITEM 1', $itemCallable);
24+
$myItem2 = new MyItem('MY CUSTOM ITEM 2', $itemCallable);
25+
26+
$menu = (new CliMenuBuilder)
27+
->registerItemStyle(MyItem::class, new MySelectableStyle())
28+
->modifyStyle(MySelectableStyle::class, function (MySelectableStyle $style) {
29+
$style->setUnselectedMarker('--- ');
30+
$style->setSelectedMarker('*** ');
31+
})
32+
->setTitle('Showcasing Custom Items & Styles')
33+
->addMenuItem($myItem)
34+
->addMenuItem($myItem2)
35+
->addLineBreak()
36+
->addSplitItem(function (SplitItemBuilder $b) use ($itemCallable, $myItem) {
37+
$b->addItem('Split Item', $itemCallable);
38+
$b->addSubMenu('Split Item Submenu', function (CliMenuBuilder $b) use ($myItem) {
39+
$b->addMenuItem($myItem);
40+
});
41+
$b->addMenuItem($myItem);
42+
})
43+
->addLineBreak()
44+
->addSubMenu('Options', function (CliMenuBuilder $b) use ($myItem) {
45+
$b->addMenuItem($myItem);
46+
})
47+
->build();
48+
49+
$menu->open();

src/Builder/CliMenuBuilder.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -304,9 +304,9 @@ public function addSplitItem(\Closure $callback) : self
304304
$builder->enableAutoShortcuts($this->autoShortcutsRegex);
305305
}
306306

307-
foreach ($this->extraItemStyles as $extraItemStyle) {
307+
each($this->extraItemStyles, function (int $i, array $extraItemStyle) use ($builder) {
308308
$builder->registerItemStyle($extraItemStyle['class'], $extraItemStyle['style']);
309-
}
309+
});
310310

311311
$callback($builder);
312312

0 commit comments

Comments
 (0)