/** * @param CliMenu $menu */ public function __invoke(CliMenu $menu) { $menu->close(); $item = $menu->getSelectedItem(); $exercise = $this->exerciseRepository->findByName($item->getText()); $exercises = $this->exerciseRepository->findAll(); $this->userState->setCurrentExercise($item->getText()); $this->userStateSerializer->serialize($this->userState); $numExercises = count($exercises); $exerciseIndex = array_search($exercise, $exercises) + 1; $output = "\n"; $output .= $this->color->__invoke(' LEARN YOU THE PHP FOR MUCH WIN! ')->magenta()->bold() . "\n"; $output .= $this->color->__invoke('*********************************')->magenta()->bold() . "\n"; $output .= "\n"; $output .= $this->color->__invoke(" " . $exercise->getName())->yellow()->bold() . "\n"; $output .= $this->color->__invoke(sprintf(" Exercise %d of %d\n\n", $exerciseIndex, $numExercises))->yellow(); $content = file_get_contents($exercise->getProblem()); $doc = $this->markdownRenderer->render($content); $doc = str_replace('{appname}', $this->appName, $doc); $output .= $doc; $output .= "\n"; $output .= $this->helpLine('To print these instructions again, run', 'print'); $output .= $this->helpLine('To execute your program in a test environment, run', 'run program.php'); $output .= $this->helpLine('To verify your program, run', 'verify program.php'); $output .= $this->helpLine('For help run', 'help'); $output .= "\n\n"; $this->output->write($output); }
/** * @param CliMenu $menu */ public function __invoke(CliMenu $menu) { if ($parent = $menu->getParent()) { $menu->close(); $parent->open(); } }
/** * @param CliMenu $menu */ public function __invoke(CliMenu $menu) { $this->userStateSerializer->serialize(new UserState()); $items = $menu->getParent()->getItems(); foreach ($items as $item) { $item->hideItemExtra(); } $confirm = $menu->confirm('Status Reset!'); $confirm->getStyle()->setBg('magenta')->setFg('black'); $confirm->display('OK'); }
/** * Calculate the co-ordinates to write the messages */ protected function calculateCoordinates() { //y $textLines = count(explode("\n", $this->text)) + 2; $this->y = ceil($this->parentMenu->getCurrentFrame()->count() / 2) - ceil($textLines / 2) + 1; //x $parentStyle = $this->parentMenu->getStyle(); $dialogueHalfLength = (mb_strlen($this->text) + $this->style->getPadding() * 2) / 2; $widthHalfLength = ceil($parentStyle->getWidth() / 2); $this->x = $widthHalfLength - $dialogueHalfLength; }
/** * Display the sub menu * @param CliMenu $parentMenu */ public function showSubMenu(CliMenu $parentMenu) { $this->parentMenu = $parentMenu; $this->parentMenu->closeThis(); $this->subMenu->open(); }
/** * @return void */ public function __invoke() { $this->menu->open(); }
/** * @param CliMenu $menu */ public function __invoke(CliMenu $menu) { $menu->close(); }
/** * @param CliMenu $menu */ public function __invoke(CliMenu $menu) { $menu->close(); $command = $this->command; $command(); }