From d9d3e16b92587559fa4cade84e2a7997e398bd66 Mon Sep 17 00:00:00 2001 From: Lynesth Date: Tue, 1 May 2018 21:02:59 +1100 Subject: [PATCH 1/2] Allow preparing of subMenus This allows passing another CliMenuBuilder as the second argument of CliMenuBuilder::addSubMenu(). --- src/CliMenuBuilder.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/CliMenuBuilder.php b/src/CliMenuBuilder.php index 6a0c09a9..4f3dd8e9 100644 --- a/src/CliMenuBuilder.php +++ b/src/CliMenuBuilder.php @@ -150,10 +150,15 @@ public function addAsciiArt(string $art, string $position = AsciiArtItem::POSITI /** * Add a submenu with a string identifier */ - public function addSubMenu(string $id) : CliMenuBuilder + public function addSubMenu(string $id, CliMenuBuilder $subMenuBuilder = null) : CliMenuBuilder { $this->menuItems[] = $id; - $this->subMenuBuilders[$id] = new static($this); + if (!empty($subMenuBuilder)) { + $subMenuBuilder->setParent($this); + $this->subMenuBuilders[$id] = $subMenuBuilder; + } else { + $this->subMenuBuilders[$id] = new static($this); + } return $this->subMenuBuilders[$id]; } From 700765fe828829431d73ebd7348df7c0de4b1f6b Mon Sep 17 00:00:00 2001 From: Lynesth Date: Tue, 1 May 2018 21:09:49 +1100 Subject: [PATCH 2/2] Return $this when adding a prepared subMenu --- src/CliMenuBuilder.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CliMenuBuilder.php b/src/CliMenuBuilder.php index 4f3dd8e9..bf578997 100644 --- a/src/CliMenuBuilder.php +++ b/src/CliMenuBuilder.php @@ -156,11 +156,11 @@ public function addSubMenu(string $id, CliMenuBuilder $subMenuBuilder = null) : if (!empty($subMenuBuilder)) { $subMenuBuilder->setParent($this); $this->subMenuBuilders[$id] = $subMenuBuilder; + return $this; } else { $this->subMenuBuilders[$id] = new static($this); + return $this->subMenuBuilders[$id]; } - - return $this->subMenuBuilders[$id]; } /**