Author: Michael Woodward (mikeymike.mw@gmail.com)
 /**
  * @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);
 }
Example #2
0
 /**
  * @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');
 }
Example #4
0
 /**
  * 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;
 }
Example #5
0
 /**
  * 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();
 }
Example #7
0
 /**
  * @param CliMenu $menu
  */
 public function __invoke(CliMenu $menu)
 {
     $menu->close();
 }
 /**
  * @param CliMenu $menu
  */
 public function __invoke(CliMenu $menu)
 {
     $menu->close();
     $command = $this->command;
     $command();
 }